【问题标题】:How can I monitor the winforms TextBox.SelectionStart property for changes?如何监视 winforms TextBox.SelectionStart 属性的更改?
【发布时间】:2009-05-25 19:39:35
【问题描述】:

我有一个多行文本框,我想在文本框下方的标签中显示用户当前的行号和列号。看起来我可以使用 SelectionStart 属性、GetLineFromCharIndex 方法和 GetFirstCharIndexOfCurrentLine 方法获取行号和列号。但是,每次文本框中的选择更改时,我都看不到任何触发的事件。

我能看到的最好的方法是监视 KeyPress 和 MouseDown 事件并在每个事件之后检查 SelectionStart 属性。我想我可以使用计时器来观察变化,但这感觉很奇怪。

我错过了什么吗?

【问题讨论】:

  • 只需检查 MouseUp 和 KeyUp 事件中的 SelectionLength。

标签: .net winforms textbox


【解决方案1】:

为了更健壮,您可能需要添加一个计时器,并定期检查它; from here,控件没有发布合适的 win32 消息 (EN_SELCHANGE) 来作为事件执行此操作。

【讨论】:

    【解决方案2】:

    要获取 SelectionChanged 事件,您还可以将 TextBox 转换为 RichTextBox。 RichTextBoxes 的行为与 TextBoxes 稍有不同,因此这可能不是一个理想的解决方案,但至少有一个 SelectionChanged event

    【讨论】:

    • 感谢您的建议,但我特别想要文本框的简单性。我愿意用计时器来换取观看的不雅。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-19
    • 2010-11-19
    • 2015-09-08
    • 1970-01-01
    • 2018-08-21
    • 2017-09-07
    • 2012-08-05
    相关资源
    最近更新 更多