2012-06-29 3 views
0

ComboBox1 на скрытой панели (panelSky)Как сменить ComboBox.Text на скрытую панель?

ComboBox1.Text = "323"; 
panelSky.Visible = true; // combo doesn't have text "323' 

Что является причиной, пожалуйста?
Если панель видна, я могу изменить comboText на «323», независимо от того, «323» находится в списке элементов или нет.

+0

Пожалуйста, проверьте, если «323» присутствует в пунктах из ComboBox. –

+0

Независимо от того, скрыта ли она в то время, не имеет значения. Вы уверены, что не работает больше кода, предотвращающего обновление пользовательского интерфейса? – Ari

+0

Когда панель видна, я могу изменить comboText на «323», независимо от того, «323» находится в списке элементов или нет. – Alegro

ответ

0

Я сделал небольшой тест с вашим сценарием. Я создал новое приложение winforms с панелью и combobox. При загрузке формы я установил видимость панели на значение false и установил combobox в "323", а затем установил видимость панели в true и "323" все еще был там. Это то, что я сделал:

pnlSky.Visible = false; 
comboBox1.Text = "323"; 
pnlSky.Visible = true; 

Там должно быть что-то в разметке или коде, который вызывает проблемы при установке значения combobox когда panel не видно. Можете ли вы опубликовать разметку и какой код произойти до и после установки значения combobox?

Основываясь на ваш комментарий к @HatSoft об обновлении combobox от button на другом panel, я побежал следующий код и он до сих пор обновляется скрытый combobox

private void button1_Click(object sender, EventArgs e) 
{ 
    combobox1.Text = "323"; 
    pnlSky.Visible = true; 
} 
+0

Saied, разместите это комбо на панели hiden и кнопку на другой (видимой) панели или на самой форме. Затем попробуйте мой код. – Alegro

+0

@Alegro, у меня есть, combobox1 находится на скрытой панели (pnlSky), а кнопка1 находится на другой видимой панели (panel1) – SNH

+0

@ Saied, ваш код не мой код – Alegro

0

Возможно Combo Type (т.е. DropDownStyle) не подходит ...

Попробуйте использовать вместо Combo1.Items.Add("323"), а затем установить индекс 0 (первый элемент)

Combo1.SelectedIndex = 0 
+0

Когда панель видна, я могу изменить comboText на «323», независимо от того, «323» находится в списке элементов или нет. – Alegro

+0

На панели должно быть какое-то событие Load или Activate, которое повторно инициализирует элементы управления. Это не нормальное поведение ... Являются ли эти статические элементы управления? Были ли у вас какие-либо события в группе? Если это так - поставить некоторые точки останова и проверить статистику ComboBox – Grantly

+0

Вы можете заставить ComboBox обновляться с помощью ComboBox.Invalidate() и ComboBox.Update() .. Затем проверьте свойство Text в коде (Debug.Writeline (ComboBox.Text)) - если текст установлен правильно и возвращает 323, то у вас есть какое-то событие, которое перезагружает ComboBox, проверяет все ссылки на него ... – Grantly

0

Если я правильно понял Combox1 живет в контейнере типа панели

Так код ниже моей сделать трюк

 if (comboBox1.Parent.Visible) 
     { 
      comboBox1.Text = "323"; 
     } 

Update: После того, как все больше знаний о вашем сценарии

button1 живет в Panel1, которая видна и combox1 живет в panel2, что не видно

private void button1_Click(object sender, EventArgs e) 
    { 
     if (comboBox1.Parent.Visible) 
     { 
      comboBox1.Text = "323"; 
     } 
    } 
+0

это работает, но я хочу изменить comboText на скрытой панели, а затем показать панель. – Alegro

+0

Я вижу, что вы имеете в виду, поэтому comboBox1.Text должен измениться, когда skypanel.Visible является ложным ..Но на каком или каком событии вы сделаете изменение txt для comboBox1 – HatSoft

+0

btnНажмите на другую панель – Alegro

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