如何检查C#中多行文本框中的选定文本?

时间:2013-04-11 11:36:48

标签: c# .net select textbox

我的应用程序中有两个多行文本框和一个箭头按钮,我想要的是当用户从多行文本框1中选择任意一行或多行时,它应该从0更新该行的状态到1然后我想将状态为1的行加载到Multi-Line文本框中2.我试过但不知道接下来该怎么办?

代码

for (int i = 0; i < txtNewURLs.Lines.Length; i++)
{
    if (txtNewURLs.Lines[i].Select)
    {

    }
}

任何人都可以帮助我或者做一些准备来完成这项任务吗?

1 个答案:

答案 0 :(得分:1)

假设您使用的是与MSDNS How to: Create a Multiline TextBox Control类似的多行文字框,您可以使用SelectedText属性来检索用户选择的文本。这些行将由\r\n

分隔

如果我有以下(在页面行之间):


TEST0

TEST1


我选择了行test0test1,然后SelectedTexttest0\r\ntest1

然后您可以在\r\n上拆分并检索每个选定的行。

// Retrieve selected lines
List<string> SelectedLines = Regex.Split(txtNewURLs.SelectedText, @"\r\n").ToList();
// Check for nothing, Regex.Split returns empty string when no text is inputted
if(SelectedLines.Count == 1) {
    if(String.IsNullOrWhiteSpace(SelectedLines[0])) {
        SelectedLines.Remove("");
    }
}

// Retrieve all lines from textbox
List<string> AllLines = Regex.Split(txtNewURLs.Text, @"\r\n").ToList();
// Check for nothing, Regex.Split returns empty string when no text is inputted
if(AllLines.Count == 1) {
    if(String.IsNullOrWhiteSpace(AllLines[0])) {
        AllLines.Remove("");
    }
}

string SelectedMessage = "The following lines have been selected";
int numSelected = 0;
// Find all selected lines
foreach(string IndividualLine in AllLines) {
    if(SelectedLines.Any(a=>a.Equals(IndividualLine))) {
        SelectedMessage += "\nLine #" + AllLines.FindIndex(a => a.Equals(IndividualLine));
        // Assuming you store each line status in an List, change status to 1
        LineStatus[AllLines.FindIndex(a => a.Equals(IndividualLine));] = 1;
       numSelected++;
    }
}

MessageBox.Show((numSelected > 0) ? SelectedMessage : "No lines selected.");