2014-11-24 3 views
0

Я пытаюсь создать систему бронирования в winforms. И у меня есть combobox, где вы можете выбрать числа от одного до десяти. У меня также есть 10 групповых ящиков, и я хочу, чтобы количество отображаемых групповых ящиков равнялось выбранному числу в поле со списком. В групповых ящиках у меня есть еще одно поле со списком, где я могу выбрать номер места, поэтому важно, чтобы одновременно отображались не все ящики. Я как бы потерянный, я пытался использовать actionlistener, но я не добился успеха.Winform Combobox Изменение GUI с vaules

Здесь я называю GUI, где выпадающий находится в:

private void btnMakeBook_Click(object sender, EventArgs e) 
    { 
     ServiceReferenceBooking.BookingServiceClient bookingService = new ServiceReferenceBooking.BookingServiceClient(); 
     ServiceReferenceTickets.TicketsServiceClient ticketsService = new ServiceReferenceTickets.TicketsServiceClient(); 
     splitContainer1.Panel2.Controls.Clear(); 
     InitializeMakeBookingComponents(); 

     var allBookings = bookingService.GetAllBookings(); 
     dataGridView2.DataSource = allBookings; 

     cbTickets.ValueMember = "amount"; 
     cbTickets.DisplayMember = "amount"; 
     cbTickets.DataSource = ticketsService.GetAllTickets(); 

    }  

А вот событие, что я пытаюсь сделать:

private void cbTickets_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     if (cbTickets.SelectedItem.ToString() == "2") 
      { 
       gboxSeat2.Visible = true; 
      } 
    } 

Я получаю ошибку: ссылка на объект не установить экземпляр объекта. , и он находится на линии, где выполняется оператор if.

это событие, которое я пытался создать, но GroupBox не становится видна при выборе 2.

Надеется, что вы, ребята, можете помочь! спасибо

+0

Где вы попали? В чем проблема, отправьте свой код, если что-то не работает в этом. Похоже, что это просто вопрос о настройке свойства GroupBox.Visible в событии SelectedExdexChanged этого числа combobox. –

+0

У меня нет кода для публикации. Да, это то, о чем я думал. Я установил все GroupBox.Visible = false, чтобы по умолчанию не отображалось их количество. Но я не знаю, как использовать SelectedIndexChanged? –

+0

Это довольно [простой] (http://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.selectedindexchanged%28v=vs.110%29.aspx). Попробуйте что-нибудь, придите сюда, если у вас возникнут проблемы. Благодарю. –

ответ

0

Существует разница между SelectedIndex и SelectedItem. Первый - это индекс, основанный на 0 элемента, который был выбран вторым, является фактическим элементом, который является тем, что вы ищете. Попробуйте

private void cbTickets_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if (((ComboBox)sender).SelectedItem == "2")   
    { 
     gboxSeat2.Visible = true; 
    } 
} 

Для конкретизации мое предложение:

public partial class Form1 : Form 
{ 
    //Declare your basic controls here 
    GroupBox gboxSeat1 = new GroupBox() { BackColor = Color.Red, Visible=false}; 
    GroupBox gboxSeat2 = new GroupBox() { BackColor = Color.Blue, Visible = false }; 
    GroupBox gboxSeat3 = new GroupBox() { BackColor = Color.Green, Visible = false }; 
    GroupBox gboxSeat4 = new GroupBox() { BackColor = Color.Orange, Visible = false }; 
    ComboBox cbTickets = new ComboBox() { Items = { "0", "1", "2", "3", "4" }, Height = 35, Width = 150 }; 
    public Form1() 
    { 
     InitializeComponent(); 
     //Setup handlers and add them to the panel 
     cbTickets.SelectedIndexChanged += comboBox2_SelectedIndexChanged; 
     panel1.Controls.Add(gboxSeat1); 
     panel1.Controls.Add(gboxSeat2); 
     panel1.Controls.Add(gboxSeat3); 
     panel1.Controls.Add(gboxSeat4); 
     panel1.Controls.Add(cbTickets); 

    } 

    private void InitializeBookingComponents() 
    { 
     //Arrange your controls the way you want here 
    } 

    private void comboBox2_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     if (((ComboBox)sender).SelectedItem == "2") 
      gboxSeat2.Visible = true; 
    } 

} 

Это убедитесь, что вы только когда-либо один элемент управления, вы можете удалить или добавить их в панель на ваш досуг сохраняя только одно из ваших органов управления

+0

Я пробовал это, и теперь я получаю сообщение об ошибке: ссылка на объект не установлена ​​в экземпляр объекта. Вы знаете, почему это может быть? он каким-то образом получает нулевое значение. Я не понимаю, почему? –

+0

Показать точный код, который вы используете, что дает эту ошибку. Он говорит, что один из ваших объектов равен нулю –

+0

Хорошо, я собираюсь отредактировать код выше. Момент. –

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