2016-12-01 3 views
0

Я пытался выяснить, отключив текстовое поле, когда текст введен в текстовое поле. Я могу это сделать, но у меня есть еще одна проблема, которая, скажем, у вас есть текстовое поле с некоторым словом i.e «Добро пожаловать». Если я отредактирую это и добавлю больше буквы к тому, что i.e «WelcomeSSS» добавит SSS, тогда текст будет включен. Но когда я удаляю «SSS» из этого текстового поля, кнопка все еще включена и не отключена, так как текст такой же, как и перед редактированием.Отключить кнопку, когда текст введен в текстовое поле правильно и добавление диалогового окна в C#

Как я могу убедиться, что текст отключен в этой ситуации?

А также я хочу добавить диалоговое окно, когда пользователь нажимает на другую кнопку, чтобы перейти на другую страницу, не сохраняя отредактированный контент. Как мне это сделать?

Вот мой код до сих пор:

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)) 
{ 

} 
} 

Это использует обработчик события KeyUp в МОФ.

+0

Только так я понимаю это лучше ... Вы хотите отключить текстовое поле, если в нем есть определенная фраза/слово? – ephtee

+0

да в основном, что я хочу, когда текстовое поле пуст, отключите кнопку. Когда он не пуст, включите. Я ЕСМЬ ДЕЛАТЬ ЭТО с вышеуказанным кодом. То, что я также хочу сделать, это то, что если текст в текстовом поле позволяет сказать «Добро пожаловать», и когда я попытаюсь отредактировать его и сделать его «WelcomeSSS», он будет включен, но если вы удалите SSS из текстового поля и сделайте это «Добро пожаловать» так, как прежде, чем текстовое поле должно быть отключено. – user6574269

+0

Мы все вкладываем много времени, отвечая на ваш вопрос. Поэтому, пожалуйста, приложите немного усилий, чтобы просить об этом. Например. Вы хотите отключить текстовое поле «Как я могу убедиться, что текст отключен в этой ситуации?» или кнопку «SaveButton.IsEnabled = true»? И, пожалуйста, разделите то, что вы спросили, и что вы хотите сейчас. Это поможет людям понять некоторые из приведенных ниже ответов. – user2154065

ответ

0

Если я правильно понял ваш вопрос ...

private void textbox1_IsChanged(object sender, KeyEventArgs e) 
{ 

    if (textbox1.Text == "Welcome"){ 
    SaveButton.IsEnabled = false; 
    } 
    else{ 
    SaveButton.IsEnabled = true; 
    }  
} 
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 ... 
     } 
    } 
} 
+0

Значение по умолчанию отсутствует. «Добро пожаловать» - это всего лишь пример. В обычном случае текстовое поле пуст. Когда вы добавляете текст «abc» в пустое текстовое поле, кнопка сохранения включена и вы ее сохраняете. «abc» сохраняется. Затем, если вы редактируете одно и то же текстовое поле с содержимым «abc», отредактируйте его и сделайте «abcddd» и удалите ddd без нажатия кнопки «Сохранить», кнопка все еще включена. я хочу, чтобы кнопка была отключена, если текст находится в последнем состоянии i.e «abc». – user6574269

+0

Если это работает для нескольких сохраненных значений или только для последнего сохраненного значения? – user2154065

+0

более одного сохраненного значения. – user6574269

Смежные вопросы