Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#加载对话框(无法加载,但加载时,其操作不起作用)_C#_User Interface - Fatal编程技术网

C#加载对话框(无法加载,但加载时,其操作不起作用)

C#加载对话框(无法加载,但加载时,其操作不起作用),c#,user-interface,C#,User Interface,我使用的是C#,我的GUI程序中有一个加载按钮,在加载新数据之前不会向用户提示保存数据的警告。如何使提示信息正确显示?数据按我的要求正确加载,但未显示对话框消息 这是我代码的一部分: private bool dirtyText; private bool dirtyFilename; #region load //================================ // LOAD //================================

我使用的是C#,我的GUI程序中有一个加载按钮,在加载新数据之前不会向用户提示保存数据的警告。如何使提示信息正确显示?数据按我的要求正确加载,但未显示对话框消息

这是我代码的一部分:

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