【问题标题】:UserControls: What am I missing?用户控件:我错过了什么?
【发布时间】:2010-11-12 14:19:56
【问题描述】:

我创建了一个我称之为“LabeledTextBoxWithLookupControl”的东西,它继承自 UserControl。我已经将其中几个控件放在一个表单上。

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

当我从分配给 UserControl 中的 TextBox 的 KeyPress 事件中调用 TopLevelControl.SelectNextControl(this, true, true, true, true) 时,它实际上是在选择下一个 UserControl,我实际上希望它在其中选择下一个用户控件内的文本框。 UserControl 的 CanSelect 属性返回 true,但我没有看到任何简单的方法来更改 UserControl 的控件样式。

另外,当我使用 Tab Order 模式时,我不希望它考虑用户控件本身,而只考虑 UserControl 内的 TextBox 作为 Tab 顺序的候选者。我是否应该覆盖 UserControl 的 TabIndex 和 TabStop 属性并使其指向 TextBox 的 TabIndex 和 TabStop?

另外,我应该只公开控件本身的属性,还是应该将每个控件公开为一个属性来设置我希望能够设置的这些属性,例如标签控件的Text属性,点击事件的 LookupControl 和 TextBox 的 Text 属性。

【问题讨论】:

  • 无复制。 UserControl 包含显式代码,如果它获得焦点,则将焦点传递给它的第一个子控件。如果您需要解决问题的帮助,请将小型重现项目发布到文件共享服务或粘贴箱。
  • @Hans:我在新创建的 UserControl 类型中遇到了这个问题,所以我不确定我是否同意你的“无复制”。

标签: winforms user-controls


【解决方案1】:

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

UserControl 的构造函数中添加:

SetStyle(ControlStyles.Selectable, false);

【讨论】:

  • @Dave:没问题。乐意效劳。 :)
猜你喜欢
  • 2014-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多