在文本框中正确输入文本并在c#中添加对话框时禁用按钮

时间:2016-12-01 21:15:39

标签: c# wpf

我一直试图在文本框中输入文本时弄清楚禁用文本框。我能够做到这一点,但我还有另外一个问题,就是说,你有一个带有一些单词的文本框,即#34;欢迎"。如果我编辑并添加更多信件,即#34; WelcomeSSS"添加SSS然后启用文本。但是当我删除" SSS"从该文本框中,按钮仍然启用而不是禁用,因为文本与编辑前的文本相同。

如何确保在这种情况下禁用文本?

此外,我想在用户点击不同按钮转到不同页面时添加对话框,而不保存已编辑的内容。我该怎么做?

到目前为止,这是我的代码:

private void textbox1_IsChanged(object sender, KeyEventArgs e)
{
//SaveButton.IsEnabled = !string.IsNullOrEmpty(TextBox1.Text);
 if (TextBox1.Text.Trim().Length > 0)
{
SaveButton.IsEnabled = true;
} 

if (WpfHelpers.Confirmation(resources.QuitWithoutSaving, resources.Changes))
{

}
}

这是在wpf中使用KeyUp事件处理程序。

2 个答案:

答案 0 :(得分:0)

如果我理解你的问题......

private void textbox1_IsChanged(object sender, KeyEventArgs e)
{

     if (textbox1.Text == "Welcome"){
     SaveButton.IsEnabled = false;
     }
     else{
     SaveButton.IsEnabled = true;
     }    
}

答案 1 :(得分:0)

您需要一个用于存储已保存值的数据结构。例如。字符串列表。在以下代码段中,这些值存储在SavedTextBoxTexts列表中。

首先,SaveButton被禁用(您也可以在XAML中执行此操作)。单击SaveButton后,textBox1.text值将存储在列表中,按钮将被禁用。

编辑textBox1.text并且{已存在SaveButton时,会检查不同的条件。

如果textBox1.text中已存储SavedTextBoxTextstextBox1.text为空,或仅包含空格字符,SaveButton将被禁用。否则,SaveButton将被启用。

public partial class MainWindow : Window
{
    private List<string> SavedTextBoxTexts = new List<string>();

    public MainWindow()
    {
        InitializeComponent();

        // Disable button right from the beginning.
        SaveButton.IsEnabled = false;
    }

    private void textBox1_TextChanged(object sender, TextChangedEventArgs e)
    {
        // The function may be called, while the window has not been created completely.
        // So we have to check, if the button can already be referenced.
        if (SaveButton != null)
        {
            // Check if textBox1 is empty or
            // textBox1.text is already in the list of saved strings.
            if (String.IsNullOrEmpty(textBox1.Text) ||
                textBox1.Text.Trim().Length == 0 ||
                SavedTextBoxTexts.IndexOf(textBox1.Text.Trim()) >= 0)
            {
                // Disable Button
                SaveButton.IsEnabled = false;
            }
            else
            {
                // If textBox1.text has not been saved already
                // or is an empty string or a string of whitespaces,
                // enable the SaveButton (again).
                SaveButton.IsEnabled = true;
            }
        }
    }

    private void SaveButton_Click(object sender, RoutedEventArgs e)
    {
        // Store the text in textBox1 into the SavedTextBoxTexts list.
        SavedTextBoxTexts.Add(textBox1.Text.Trim());

        // Disable the SaveButton.
        SaveButton.IsEnabled = false;
    }

    // This is executed, when the other button has been clicked.
    // The text in textBox1 will not be saved.
    private void AnotherButton_Click(object sender, RoutedEventArgs e)
    {
        if (WpfHelpers.Confirmation(resources.QuitWithoutSaving, resources.Changes))
        {
            // Move to other page ...
        }
    }
}