C#加载对话框(无法加载,但加载时,其操作不起作用)
我使用的是C#,我的GUI程序中有一个加载按钮,在加载新数据之前不会向用户提示保存数据的警告。如何使提示信息正确显示?数据按我的要求正确加载,但未显示对话框消息 这是我代码的一部分:C#加载对话框(无法加载,但加载时,其操作不起作用),c#,user-interface,C#,User Interface,我使用的是C#,我的GUI程序中有一个加载按钮,在加载新数据之前不会向用户提示保存数据的警告。如何使提示信息正确显示?数据按我的要求正确加载,但未显示对话框消息 这是我代码的一部分: private bool dirtyText; private bool dirtyFilename; #region load //================================ // LOAD //================================
private bool dirtyText;
private bool dirtyFilename;
#region load
//================================
// LOAD
//================================
private void loadFile()
{
try
{
textBox.Text = File.ReadAllText(fileName.Text);
dirtyText = false;
dirtyFileName = false;
}
catch (Exception ex)
{
MessageBox.Show("Load failed: " + ex.Message);
}
}
//================================
// LOAD - actual code to load files
//================================
private void load_Click(object sender, EventArgs e)
{
if (dirtyFileName)
{
DialogResult result = MessageBox.Show("Your data have not been saved yet. Would you like to save them before loading?", "Unchanged data", MessageBoxButtons.YesNoCancel);
switch (result)
{
case DialogResult.Yes:
File.WriteAllText(fileName.Text, " ");
loadFile();
break;
case DialogResult.No:
loadFile();
break;
case DialogResult.Cancel:
break;
}
}
else
{
loadFile();
}
}
#endregion
下面的图片显示了我单击Load时希望看到的内容
还有一个简短的提示:我确实让对话框工作了,但是,我从if语句中删除了包含switch语句的整个代码块,并去掉了if-else语句;但这样做会使对话框中的所有按钮都无效。保存不会保存文件,加载会删除文本,取消,嗯。。。取消只做它最擅长的事情:取消操作。从技术上讲,重要的按钮是无用的
我希望我能找到解决办法。非常感谢。如果您只需删除对
dirtyFileName
的检查(在您的示例中始终为false),它应该可以工作:
private void load_Click(object sender, EventArgs e)
{
DialogResult result = MessageBox.Show("Your data have not been saved yet. Would you like to save them before loading?", "Unchanged data", MessageBoxButtons.YesNoCancel);
switch (result)
{
case DialogResult.Yes:
File.WriteAllText(fileName.Text, " ");
loadFile();
break;
case DialogResult.No:
loadFile();
break;
case DialogResult.Cancel:
break;
}
}
但是,最好仔细考虑一下为什么从不分配
dirtyFileName
,因为现在经常会显示提示。您在load\u Click
中的条件是错误的,请在显示的代码中使用if(!dirtyFileName)
而不是if(dirtyFileName)
,dirtyFileName
始终为false
,因此对话框result
代码永远不会执行我为我的dirtyFileName和dirtyText分配了一个布尔值,而我在执行该值时,该值也起作用。谢谢你们!我很感激在我使用dirtyFileName和dirtyText时,DI为我的dirtyFileName和dirtyText分配了一个布尔值,并且它工作正常。谢谢你们!我很感激D