Как запрашивать у пользователя сообщение при изменении элемента поля со списком

#c# #combobox

#c# #поле со списком

Вопрос:

Я новичок в C #, я пытаюсь запросить у пользователя сообщение после изменения combobox элемента, но приведенный ниже код не работает, даже если combobox элемент изменен.

  namespace NormingPointTagProgrammer
{
public partial class normingPointTagProgrammer : Form
{
    public normingPointTagProgrammer()
    {
        InitializeComponent();

        // User Message to start the tag programming
        MessageBox.Show("To Read the data programmed in a Tag, Click on READ Buttonn"  
                        "To Write data into the tag, n"  
                        "Please select the Data Format, under DATA TO PROGRAMMER frame.");
    } 

    private void dataFormatComboBox_SelectedIndexChanged(object sender, EventArgs e)
    {
        // When the user has decided to program the tag. Check the Data format selected by the user, and ask the user to
        // enter required fields based on the format selected.

        if (datFormatcomboBox.Text == "RSO")
        {
            MessageBox.Show("Within DATA TO PROGRAMMER frame, under RSO DATA from DataBase Enter the following fields: n"  
                            "Region (1-254),n"  
                            "Segment (1-255),n"  
                            "Offset (0 to 6553.5) and n"  
                            "select Type dropdown Field, Under");
         }

        else if (datFormatcomboBox.Text == "INDEX")
        {
            MessageBox.Show("Within DATA TO PROGRAMMER frame, under INDEX DATA from DataBase Enter the following fields: n"  
                            "Region (255) and n"  
                            "Index  (1-65535) ");
        }

        else if (string.IsNullOrWhiteSpace(datFormatcomboBox.Text))
        {
            MessageBox.Show("Please select the Data Format, under DATA TO PROGRAMMER frame.");
        }

        else
        {
            MessageBox.Show("Required fields not entered by the user.n"  
                            "Please enter the data to be programmed based on the Data Format selected");
        }

    }
}
}
 

Комментарии:

1. в методе достигнута точка останова?

2. Вы пытались добавить обработчик событий? Пример. dataFormatComboBox.SelectedIndexChanged = dataFormatComboBox_SelectedIndexChanged;

3. Нет, точка останова не попадает

4. Тогда вы ComboBox , вероятно, не подписаны на событие. Делайте то, что @vbnet3d упоминает в своем комментарии. Если вы используете VS, в следующий раз просто дважды щелкните соответствующее событие в окне свойств, и оно будет сгенерировано и подписано для вас.

Ответ №1:

Убедитесь, что на ваше событие подписано, для сокращения будет использоваться, например, приведенное ниже,

 ComboBoxChanged  = dataFormatComboBox_SelectedIndexChanged();
 

Или,

 ComboBoxChanged  = new EventHandler(dataFormatComboBox_SelectedIndexChanged);


// This will be called whenever the ComboBox changes:
      private void dataFormatComboBox_SelectedIndexChanged(object sender, EventArgs e) 
      {
         //Your datFormatcomboBox.Text logic here.
      }
 

По сути, все, что передается в ComboBoxChanged, используется e для получения ввода текста со списком.

Дополнительная информация здесь: https://msdn.microsoft.com/en-us/library/aa645739 (v= против 71).aspx

Надеюсь, это поможет!