2012-11-23 43 views
0

我有一個richTextbox裏面有一些文本。目前,「橙」位於第3行....所以我怎麼能得到「橙」的線。我的代碼無法正常工作=(如何獲取richTextBox中特定文本的行?

enter image description here

我的C#代碼:

private void button1_Click(object sender, EventArgs e) 
    { 
     string orange = "orange"; 
     int a = richTextBox1.Text.IndexOf(orange); 
     var b = richTextBox1.Lines.ElementAt(a); 

     textBox1.Text = b.ToString(); 

    } 

回答

5

如何

private void button1_Click(object sender, EventArgs e) 
{ 
    string orange = "orange"; 

    textBox1.Text = richTextBox1.GetLineFromCharIndex(
     richTextBox1.Find(orange) 
    ); 
} 

參考的RichTextBox.GetLineFromCharIndex(int)文檔和RichTextBox.Find(string)

基本上Find(string)返回文本中字符串開頭的索引(如果找不到該字符串,則返回-1),則將此索引傳遞給GetLineFromCharIndex(int),該索引又檢索指定索引的行號。
您可能需要處理未找到字符串的特殊情況,並從Find(string)返回-1

+2

+1。爲什麼當'GetLineFromCharIndex'存在時自動調用函數? :) –

+1

@Basti M:很好地使用內置的函數..化工 –

+0

Coool ...感謝兄弟C = – 0070

0

你可能需要做一些處理給定文本的多行,但它應該工作。

private void button1_Click(object sender, EventArgs e) 
{ 
    string orange = "orange"; 

    foreach (string line in richTexBox1.Lines) 
     if (line.Contains(orange)) 
      textBox1.Text = line.ToString(); 
} 
+0

你不需要拆分富文本框有Lines屬性,它返回所有的行。 –

0
private void button1_Click(object sender, EventArgs e) 
{ 
    string orange = "orange"; 
    stringp[] lines = richTextBox1.Lines; 
    foreach(string line in lines) 
    { 
    int a = line.IndexOf(orange); 
    if(a >0) 
    { 
     var b = line.ElementAt(a); 

     textBox1.Text = b.ToString(); 
    } 

} 

希望幫助

相關問題