请帮助,我试着使程序一打开就用窗口提示保存rtf文件,我试着使用Window_Activated事件,但是当程序启动时,它确实打开了窗口来保存,但是不管我按Save还是Cancel,SaveFileDialog总是出现在循环中,无法传递。这是我使用的代码,但可能不是很好。
private void Window_Activated(object sender, EventArgs e)
{
Microsoft.Win32.SaveFileDialog saveDlg = new Microsoft.Win32.SaveFileDialog();
saveDlg.DefaultExt = ".rtf";
saveDlg.Filter = "RTF Documents (.rtf)|*rtf";
Nullable<bool> rezultat = saveDlg.ShowDialog();
if (rezultat == true)
{
string filename = saveDlg.FileName;
System.IO.File.Create(filename);
}
}发布于 2013-12-20 01:09:52
像这样做
*>注:这将使用后藤声明,当其他人可能不争辩时
使用过,但仍然支持,只有在没有其他选项的情况下才能使用*
private void Window_Load(object sender, EventArgs e)
{
System.Windows.Forms.SaveFileDialog saveDlg = new System.Windows.Forms.SaveFileDialog();
saveDlg.DefaultExt = ".rtf";
saveDlg.Filter = "RTF Documents (.rtf)|*rtf";
RetHere:
if (saveDlg.ShowDialog() == System.Windows.Forms.DialogResult.Yes)
{
string filename = saveDlg.FileName;
System.IO.File.Create(filename);
}
else {
System.Windows.Forms.MessageBox.Show("Your message here!", "Save", System.Windows.Forms.MessageBoxButtons.OK);
goto RetHere;
}
}发布于 2013-12-20 01:01:13
激活窗口发生在它成为前台窗口时,当您提示用户保存时,它会更改焦点,单击OK或取消它,将焦点更改回主窗口,触发Window_Activated事件。这会是一个无限的循环吗?我没有测试它,但我想可能会发生。
编辑:我建议yout使用另一个事件,也许是在表单加载时?
发布于 2013-12-20 01:02:22
您不能为此使用Window_Activated (很明显)。每次窗户被激活它都会被激活。下面是正在发生的事情:
Window_Activated被执行。saveDlg,它会使您的窗口失效。saveDlg关闭,从而激活您的窗口。您需要添加第一次执行Window_Activated时设置的标志,并在执行代码之前检查它,或者使用只运行一次的不同事件(如Load)。
https://stackoverflow.com/questions/20694536
复制相似问题