2010-11-12 202 views
0

我创建了我称为“LabeledTextBoxWithLookupControl”的继承自UserControl的内容。我已经将这些控件中的几个放在窗体上。UserControls:我错过了什么?

现在我开始认为这是一个坏主意。

当我从事件中调用TopLevelControl.SelectNextControl(this, true, true, true, true)事件分配给UserControl中的TextBox时,它实际上是选择下一个UserControl,我真的希望它选择下一个用户控件中的文本框。 UserControl的CanSelect属性返回true,但我看不到任何简单的方法来更改UserControl的控件样式。另外,当我使用Tab顺序模式时,我更喜欢不考虑用户控件本身,而只是将UserControl内部的TextBox作为Tab顺序的候选项。我应该重写UserControl的TabIndex和TabStop属性,并使它们指向TextBox的TabIndex和TabStop?另外,我应该公开控件本身的属性,还是应该公开每个控件作为属性来设置这些属性,我希望能够设置这些属性,如标签控件的Text属性,点击LookupControl的事件和TextBox的Text属性。

+1

没有摄制。 UserControl包含显式代码,如果它获得焦点,它会将焦点传递给其第一个子控件。如果您需要帮助解决您的问题,请将一个小型repro项目发布到文件共享服务或粘贴存储箱。 – 2010-11-12 15:41:24

+0

@Hans:我用新创建的'UserControl'类型产生了这个问题,所以我不确定我是否同意你的“无repro”。 – 2010-11-12 15:53:05

回答

1

如果您不希望UserControl成为制表符,而是它的内容,则必须确保它没有ControlStyles.Selectable样式。

在你UserControl添加的构造函数:

SetStyle(ControlStyles.Selectable, false); 
+0

真棒!谢谢! – Dave 2010-11-12 16:21:23

+0

@Dave:没问题。乐于帮助。 :) – 2010-11-12 16:22:15