如何在C#中单击文本框中的某一行时选择整行/行

时间:2014-01-21 13:33:24

标签: c#

例如,我有一个包含以下内容的文本框:

aaa
bbb
ccc

现在,当我点击第一行的a中的一个时,我希望它自动选择整个然后将其复制到另一个文本框,我将如何绕过这样做。
只是为了澄清,如果我在第一行选择a,aaa将被复制到另一个文本框。

顺便说一下,这是一个Rich文本框。

我将代码的开头放在下面,因为它不允许我出于某种原因发布问题。

Private void richTextBox1_MouseClick(object sender, MouseEventArgs e)
{
}

4 个答案:

答案 0 :(得分:0)

试试这个

this.textBox1.GetLineFromCharIndex(this.textBox1.SelectionStart) + 1;

来源:  http://social.msdn.microsoft.com/Forums/en-US/6f100a25-44ec-44d7-b73c-0b62f89e934d/how-to-detect-current-line-in-a-textbox

答案 1 :(得分:0)

// now you need to know what character index starts that line
var start = textBox.GetFirstCharIndexOfCurrentLine();

// and with the line already in hand we can calculate the ending index
var end = start + textBox.Lines(textBox.GetLineFromCharIndex(start)).Length;

// now select that range
textBox.Select(start, end);

答案 2 :(得分:0)

我试图用RichTextBox控件做类似的事情,然后我很高兴地发现了ShowSelectionMargin属性。设置为True时,它会为您提供一个左边距,您可以单击该边距来选择整行(这恰好是我想要的行为)。

不完全是OP所要求的,但也许与寻求此类功能的其他人相关。

答案 3 :(得分:0)

Public Sub SelectFullLine(ByVal sender As TextBox)
    Dim box = CType(sender, TextBox)
    box.Focus()

    Dim b = box.GetFirstCharIndexOfCurrentLine()

    While box.GetPositionFromCharIndex(box.GetFirstCharIndexOfCurrentLine()).Y = box.GetPositionFromCharIndex(b).Y
        b = b + 1
    End While

    If box.Text.Chars(b - 1) = Chr(10) Then
        b = b - box.GetFirstCharIndexOfCurrentLine() - 1
    Else
        b = b - box.GetFirstCharIndexOfCurrentLine()
    End If
    box.Select(box.GetFirstCharIndexOfCurrentLine(), b)

End Sub