У меня довольно большое (4700 строк) приложение Windows Forms, которое я написал для координации трех отделов на моем производственном предприятии. У меня есть много полей со списком во всем приложении, и все они работают отлично, но у меня есть одно поле со списком, который прекрасно работает при нагрузке, но как только вы меняете вкладки и возвращаетесь, комбинированный список останавливается. Обратите внимание: это порядок объектов Form1> TableLayoutPanel> TabControl> TabPage> TableLayoutPanel> ComboBox.
На нагрузке:
После смены вкладок (они окрашены любым фоном вкладки, на которой я только что щелкнул):
Единственный способ исправить это - закрыть приложение и снова открыть. Пока я остаюсь на вкладке, управление работает отлично все время.
Вот как я загружаю данные для поля со списком:
private void LoadFGPN()
{
SqlConnection con = new SqlConnection(Properties.Resources.Tef7_Conn);
SqlDataAdapter da;
DataTable dt = new DataTable();
StringBuilder sql = new StringBuilder();
sql.Append("SELECT DISTINCT(material) FROM [TEF7].[CM].[ALLPartNumbers] WHERE material LIKE '_____7______-6RP' OR material LIKE '_____4______-6RP' OR material LIKE '_________8__-6ML' OR material LIKE '_________[0-7,9]__-6ML'");
da = new SqlDataAdapter(sql.ToString(), con);
da.Fill(dt);
if (cbFGPN.DataSource == null)
{
cbFGPN.DataSource = dt;
}
else
{
cbFGPN.DataSource = null;
cbFGPN.DataSource = dt;
}
cbFGPN.ValueMember = "material";
cbFGPN.DisplayMember = "material";
} //loads finished good combo box on kanban
Что я пробовал:
Событие SelectionChangeCommitted и добавление .Refresh () и .Invalidate () / .Update () по отдельности безуспешно.
* Свойство Draw Mode поля со списком установлено на Normal
* winforms tabcontrol
* Подвесить краску
* событие принудительного рисования
Я в тупике. Есть идеи как это исправить?
РЕДАКТИРОВАТЬ: Просто чтобы быть смешным, я попробовал следующее безуспешно. Управление остается скрытым.
if (tcMain.SelectedIndex == 0)
{
cbFGPN.Hide();
LoadPreOrderGridview("eKanban", null, null, null, null, null); //loads preorder gridview
LoadFGPN();
LoadRawPN();
cbFGPN.Show();
tlpMain.Refresh();
tcMain.Refresh();
tpKanban.Refresh();
tlpKanban.Refresh();
pnKanban.Refresh();
cbFGPN.Refresh();
}