2013-07-20 3 views
0

У меня есть ListBox, Button и RadioButton. Когда я нажму button, напиток различного вида выберет на ListBox.Радиокнопка и дисплей

Я хочу, чтобы пользователь выбирал размер напитка и показывал цену. Когда пользователь проверит large radio button, цена большого размера покажет. Цена была связана с базой данных.

Проблема заключается в том, что я выбираю переключатель, цена не будет отображаться, пока я не нажму кнопку «напитки» еще раз. Я хочу показывать цену, когда был установлен переключатель.

Вот мой кодирующая

private void signatureMilkTeaButton_Click(object sender, EventArgs e) 
{   
    listBox1.Items.Clear(); 
    string constring = "datasource=localhost;port=3306;username=root;password=000"; 
    string Query = "select* from database.drinks where drinks_Type ='M';"; 
    MySqlConnection connectDatabase = new MySqlConnection(constring); 
    MySqlCommand commandDataBase = new MySqlCommand(Query, connectDatabase); 
    MySqlDataReader myReader; 

    try 
    { 
     connectDatabase.Open(); 
     myReader = commandDataBase.ExecuteReader(); 

     while (myReader.Read()) 
     { 
      string sName = myReader.GetString("drinks_Name"); 
      listBox1.Items.Add(sName); 
     }     
     {      
      decimal MMPrice = myReader.GetDecimal("drinks_MPrice"); 
      decimal MLPrice = myReader.GetDecimal("drinks_LPrice"); 

      if (MediumButton.Checked == true) 
      { 
       textBox1.Text = MMPrice.ToString(); 

      } 
      else if (largeButton.Checked == true) 
      { 
       textBox1.Text = MLPrice.ToString(); 
      }   
     }*/  
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message);     
    }   
} 

ответ

1

Используйте CheckedChanged событие радиокнопки:

radioButton.CheckedChanged += new System.EventHandler(radioButton_CheckedChanged); 
private void radioButton1_CheckedChanged(object sender, EventArgs e) 
    { 
     //your code to show price 
    } 
+0

событие CheckedChanged нужно поместить туда, где – user2601433

+0

Первая строка 'radioButton.CheckedChanged + = новый ....' должен быть? конструктор вашего класса 'form'. Метод 'radioButton1_CheckedChanged' будет в' форме', как вы создаете другие методы. – Shaharyar

0

Вы разместили свою обработку радио кнопку внутри события нажатия кнопки, так что вы должны нажать на кнопку , чтобы вызвать все внутри метода _Click. Вместо этого можно создать отдельные методы для кнопок радио вне от signatureMilkTeaButton_Click события:

private void MediumButton_CheckedChanged(object sender, EventArgs e) 
{ 
    ShowPrice(); 
} 

private void LargeButton_CheckedChanged(object sender, EventArgs e) 
{ 
    ShowPrice(); 
} 

private void ShowPrice() 
{ 
    //...your database commands... 

    if (MediumButton.Checked) 
     textBox1.Text = "price1"; 

    else if (LargeButton.Checked) 
     textBox1.Text = "price2"; 
} 
+0

connnectDatabase.Open(); myReader = commandDataBase.ExecuteReader(); decimal MMPrice = myReader.GetDecimal ("drinks_MPrice"); decimal MLPrice = myReader.GetDecimal ("drinks_LPrice"); if (MediumButton.Checked) priceTextBox.Text = MMPrice.ToString(); else if (largeButton.Checked) priceTextBox.Text = MLPrice.ToString(); } не работает – user2601433

+0

Любые ошибки или исключения? Или ничего не происходит? – pcnThird

+0

Что происходит, когда вы добавляете 'largeButton.CheckedChanged + = LargeButton_CheckChanged' и' MediumButtonButton.CheckedChanged + = MediumButton_CheckChanged' после 'InitializeComponent()' в конструкторе формы? – pcnThird

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