Я создаю форму параметров, которая очень похожа на форму «Подключиться к базе данных» в Visual Studio 2008 в обозревателе серверов.
Форма настроек открывается как модальное диалоговое окно из родительской формы следующим образом:
private void settingsToolStripMenuItem_Click(object sender, EventArgs e)
{
var SettingsForm = new frmSettings();
SettingsForm.ShowDialog(this);
}
В SettingsForm у меня есть ComboBox, который заполнит свой список доступными именами экземпляров SQLServer.в сети через следующий код в событии DropDown:
private void cboTrackingServerName_DropDown(object sender, EventArgs e)
{
DataTable dt = SmoApplication.EnumAvailableSqlServers(false);
if (dt.Rows.Count > 0)
{
cboTrackingServerName.Items.Clear();
foreach (DataRow row in dt.Rows)
{
cboTrackingServerName.Items.Add(
row["Server"] + "\\" + row["Instance"]);
}
}
}
Проблема заключается в том, что всякий раз, когда пользователь нажимает стрелку DropDown на ComboBox, SettingsForm на мгновение теряет фокус на родительскую форму,SettingsForm появляется, чтобы перерисовать себя, и затем SettingsForm восстанавливает фокус.Это также приводит к тому, что фактический список DropDown не появляется, пока пользователь не щелкнет по нему снова.
Есть какие-нибудь полезные мысли по этому вопросу?