【问题标题】:Is there an equivalent to java's setFocusable() in C#?在 C# 中是否有等效于 java 的 setFocusable() 的方法?
【发布时间】:2012-05-17 18:18:04
【问题描述】:

我有一个RichTextBox,当程序开始时它是可聚焦的。在用户输入一定数量的字符后,我想阻止他们在文本框中更改/添加/等任何其他内容。

最初我将其编写为 Java 应用程序并使用 userInputBox.setFocusable(false),但我找不到在 C# 中以编程方式更改它的等效方法。我正在构建一个 Windows 窗体应用程序。我没有希望用户与之交互的任何其他容器或对象,因此我无法使用whatever.Focus() 将其从我的文本框中拉出。谢谢。

【问题讨论】:

  • 当您不希望用户更改内容时,设置ReadOnly = true 不是更容易吗?
  • @vcsjones 不一定。他根本不希望控件可聚焦可能是有原因的。

标签: c# winforms focus


【解决方案1】:

C# 有一个在 winforms 中广泛使用的事件模型。

您可以通过在不同的控件上调用Focus() 来处理控件的GotFocus 事件以取消焦点。

【讨论】:

  • 如果您的应用程序没有另一个控件可以关注,您可以随时放入一个虚拟控件并以某种方式使其不可见(例如,没有文本的标签),然后将焦点设置为该控件。
  • @Abion47 - 总会有一些其他的控制。除非你只有一个表格。
  • OP 在他的问题中说,不会有“我希望用户与之交互的任何其他容器或对象”。我只是添加一个解决方法来满足他的情况。
  • Oded,在这一点上,我没有任何其他东西可供用户交互。我只是为了体验将一个 java 应用程序转换为 C#,所以它不是一个完整的应用程序。 @Abion47 这也是一个很好的建议,但 ReadOnly 对我有用。
【解决方案2】:

设置ReadOnly = trueEnabled = false 应该可以解决问题,除非您确实需要控件无法聚焦,在这种情况下,Oded 有一个很好的答案。

【讨论】:

    猜你喜欢
    • 2011-03-20
    • 1970-01-01
    • 2013-06-03
    • 1970-01-01
    • 2014-04-06
    • 1970-01-01
    • 2019-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多