确定在richtextbox中点击了哪一行

Posted

技术标签:

【中文标题】确定在richtextbox中点击了哪一行【英文标题】:Determine which line is clicked in richtextbox 【发布时间】:2021-10-11 09:03:10 【问题描述】:

我对 windows 窗体比较陌生,目前正在制作和应用,但我遇到了一个问题。我希望确定在富文本框中单击了哪一行。我正在使用以下代码:

private void richTextBox1_PreviewMouseDown(object sender, MouseButtonEventArgs e)
        
            if (e.ChangedButton == MouseButton.Left)
            
                var charPosition = richTextBox1.GetCharIndexFromPosition(Mouse.GetPosition(richTextBox1));
                var linePosition = richTextBox1.GetLineFromCharIndex(charPosition);
            
        

我似乎无法弄清楚的唯一部分是 relativeTo 参数(无法从 'System.Windows.Forms.RichTextBox' 转换为 'System.Windows.IInputElement' 错误)。我该怎么办?

【问题讨论】:

这能回答你的问题吗? How to get the Caret Position from mouse clicking point in a RichTextBox? 【参考方案1】:

如果您使用的是 WinForms(看起来很可疑),请使用 MouseDown 事件:

private void RichTextBox1_MouseDown(object sender, MouseEventArgs e)

  if (e.Button == MouseButtons.Left)
  
    int p = richTextBox1.GetCharIndexFromPosition(e.Location);
    int line = richTextBox1.GetLineFromCharIndex(p);
    // code...
  

【讨论】:

以上是关于确定在richtextbox中点击了哪一行的主要内容,如果未能解决你的问题,请参考以下文章

ScintillaNet - 计算出用户点击了哪一行

Win8 XAML Grid 点击了哪一列和哪一行

VB里关于Rich textbox控件的方法

自定义单元格中的多个按钮。单击了哪一行中的哪个按钮?

WPF RichTextBox 控件常用方法和属性

2021-08-31 WPF控件专题 RichTextBox 控件详解