我有一個使用c#的Windows應用程序。我創建了一個表格frmMain
它加載當用戶登錄時,有4個選項像客戶創造,供應商創造,員工創造,用戶創建維護用戶控件的焦點Windows應用程序
該用戶工作正常。
問題出現在焦點。當用戶加載Customer
用戶控件並填充一些數據並讓我們假設用戶位於第4個控件(Textbox
/Combobox
或任何其他Windows窗體輸入控件)時突然點擊CreateUser
,然後CreateUser
控制負載,但焦點仍然在用戶控制Customer
中的第4個控件。
我想要的是將焦點集中在當前用戶控件所在的位置,如果它是新加載的,則將焦點放在默認控件上。
請檢查我現在用的是代碼,
// this method gets called if the form was opened earlier
private void ShowOpenForm(ControlItem _item)
{
try
{
//Get item from menu
ControlItem _menuI = null;
foreach (ToolStripmenuI menuI in tsmenuWindow.DropDownItems)
{
_menuI = (ControlItem)menuI.Tag;
if (_menuI.Control.Name.ToLower() == _item.Control.Name.ToLower())
{
break;
}
_menuI = null;
}
if (_menuI != null)
{
WmenuI_ClearAllSelection();
for (int index = 0; index < PnlUserCtrl.Controls.Count; index++)
{
Control ctl = PnlUserCtrl.Controls[index];
if (ctl.Name.ToLower() == _menuI.Control.Name.ToLower())
{
ctl.Visible = true;
ctl.BringToFront();
break;
}
}
WmenuI_SetCurrentItemChecked(_menuI);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
//User can navigate to opened items from menu as well
private void WindowMenuItem_Click(object sender, EventArgs e)
{
try
{
ControlItem _item = (ControlItem)((ToolStripMenuItem)sender).Tag;
WmenuI_ClearAllSelection();
for (int index = 0; index < PnlUserCtrl.Controls.Count; index++)
{
Control ctl = PnlUserCtrl.Controls[index];
if (ctl.Name.ToLower() == _item.Control.Name.ToLower())
{
ctl.Visible = true;
ctl.BringToFront();
if (ctl is BaseControl)
{
((BaseControl)ctl).SetFocus(); // This sets the focus to default textbox
}
break;
}
}
WmenuI_SetCurrentItemChecked(_item);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
但是這一套專注於默認文本框。不在從用戶移動到其他用戶控件的位置進行控制。
只需將重點放在用戶控件上。由於UserControl從不需要焦點,它會自動將焦點移動到具有最低TabIndex的控件。 –