Oto prosty sposób. Możesz użyć właściwości Tag w combobox. Może być pusta lub 0 wartością całkowitą, gdy jest pusta lub jeszcze się nie wypełniła. Musisz ustawić znacznik combobox jako liczbę jego elementów po obwiedni. W zdarzeniu SelectedValueChanged, jeśli właściwość Tag ma wartość null lub 0, musisz powrócić z pustki.
Oto kilka przykładów z mojego projektu.
private void cb_SelectedValueChanged(object sender, EventArgs e)
{
if (!(sender is ComboBox)) return;
ComboBox cb = sender as ComboBox;
if (DataUtils.ToInt(cb.Tag, 0) == 0) return;
if (cbSmk.SelectedValue == null) return;
/* Continue working; */
}
public static void ComboboxFill(ComboBox cb, string keyfld, string displayfld, string sql)
{
try
{
cb.Tag = 0;
cb.DataSource = null;
cb.Items.Clear();
DataSet ds = DataMgr.GetDsBySql(sql);
if (!DataUtils.HasDtWithRecNoErr(ds))
{
cb.Text = "No data";
}
else
{
cb.DataSource = ds.Tables[0];
cb.DisplayMember = displayfld;
cb.ValueMember = keyfld;
}
cb.Tag = cb.Items.Count;
}
catch (Exception ex)
{
Int32 len = ex.Message.Length > 200 ? 200 : ex.Message.Length;
cb.Text = ex.Message.Substring(0, len);
}
}
CmpHelper.ComboboxFill(cbUser, "USER_ID", "USER_NAME", "SELECT * FROM SP_USER WHERE 1=1 ORDER by 1",-1);
można ustawić flagę, ustaw DataSource, i wyłączenie flagę? Następnie w twoim programie obsługi zdarzeń możesz zobaczyć flagę i po prostu nie podejmować na nią żadnych działań. – prprcupofcoffee
WinForms lub WPF? – Paparazzi
Użyj paneli aktualizacji – sajanyamaha