我的表单中包含多个UserControls
。
当按下用户控件内的按钮时,它将打开并添加另一个用户控件 文本框和2个按钮。
一旦打开此用户控件,焦点/光标就会转到文本框。
按TAB键将焦点从一个控件移动到另一个控件,在整个表单中移动。
所以基本上我想避免这种情况。
即,有一个名为XXX的UserControl
对象。现在,当我点击"打开编辑"按钮,它会在XXX中打开一个名为YYY的新UserControl
对象。
UserControl
YYY有一个文本框和2个(保存并取消)按钮。
我想确保标签始终保持焦点 在YYY内,直到单击取消按钮关闭YYY。
我不确定是否有TabStop
格式TabStop
属性?或者我应该循环其他控件
并将其GET /admin/realms/{realm}/users/{id}
设置为FALSE?
考虑到在不同的类下有许多其他UserControl,它有点乏味。
有没有更简单的方法来实现这一目标?
答案 0 :(得分:5)
其实你的问题是:
如何在用户控件中保留制表符停止?
您可以在用户控件中覆盖要保留制表位的ProcessTabKey
。
protected override bool ProcessTabKey(bool forward)
{
return this.SelectNextControl(this.ActiveControl, true, true, true, true);
}
这样,制表位将保留在您的用户控件中。
答案 1 :(得分:1)
您需要将每个控件的TabStop
属性设置为False
。
你可以这样做:
Form_Load
事件处理程序中)用于特定控件天真的递归函数:
我用VB编写,所以你需要翻译
Public Sub LoopControls() ' Assumes this function lives within the scope of a Form
LoopControls(Me)
End Sub
Public Sub LoopControls(ByVal container As Control)
'
' TODO: Do something with the current control (container)
'
'
' Loop over the current control's inner controls
'
If Not Nothing Is container.Controls
For Each control As Control In container.Controls
LoopControls(control)
Next
End If
End Sub