我创建了一个我称之为“LabeledTextBoxWithLookupControl”的东西,它继承自UserControl。我在表格上放了几个这样的控件。
现在我开始认为这是一个坏主意。
当我从分配给UserControl中TextBox的TopLevelControl.SelectNextControl(this, true, true, true, true)
事件中调用KeyPress
时,它实际上正在选择下一个UserControl,我实际上希望它选择下一个用户控件中的文本框。 UserControl的CanSelect属性返回true,但我没有看到任何简单的方法来更改UserControl的控件样式。
另外,当我使用Tab Order模式时,我更喜欢它不考虑用户控件本身,而是将UserControl中的TextBox作为Tab键顺序的候选者。我应该覆盖UserControl的TabIndex和TabStop属性,并使它们指向TextBox的TabIndex和TabStop吗?
另外,我应该只公开控件本身的属性,还是应该将每个控件公开为属性来设置我希望能够设置的属性,例如标签控件的Text属性,click事件LookupControl和TextBox的Text属性。
答案 0 :(得分:1)
如果您不希望UserControl
成为制表位而是它的内容,则必须确保它不具有ControlStyles.Selectable
样式。
在UserControl
添加:
SetStyle(ControlStyles.Selectable, false);