我一直试图在文本框中输入文本时弄清楚禁用文本框。我能够做到这一点,但我还有另外一个问题,就是说,你有一个带有一些单词的文本框,即#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事件处理程序。
答案 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
中已存储SavedTextBoxTexts
或textBox1.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 ...
}
}
}