是否可以通過編程方式在WPF中的TextBox
元素內獲取特定行的起始處的脫字號索引?從文本框獲取索引C#
例如,第20行中進行選擇:
my_textbox.GetLineIndex(20);
我希望得到這個信息,這樣我就可以用這個作爲一個my_textbox.SelectionStart
值。
有my_textbox.ScrollToLine(20)
,但這並不給我的索引,我不認爲?
是否可以通過編程方式在WPF中的TextBox
元素內獲取特定行的起始處的脫字號索引?從文本框獲取索引C#
例如,第20行中進行選擇:
my_textbox.GetLineIndex(20);
我希望得到這個信息,這樣我就可以用這個作爲一個my_textbox.SelectionStart
值。
有my_textbox.ScrollToLine(20)
,但這並不給我的索引,我不認爲?
我不認爲有內置的方式,但你可以嘗試這樣的擴展方法。
public static int GetLineIndex(this TextBox textbox, int line)
{
var text = textbox.Text;
var thisLine = 0;
for (var i = 0; i < text.Length; i++)
{
if (thisLine == line)
return i;
if (text[i] == '\n')
++thisLine;
}
throw new ArgumentOutOfRangeException();
}
完美,謝謝!我忘記了一個字符串只是一個字符數組! – Luke 2013-03-04 16:25:19
您可以使用按鈕單擊多行TextBox
string findText = "sample";
int charIndex = txtSource.Text.IndexOf(findText);
MessageBox.Show(txtSource.GetLineFromCharIndex(charIndex).ToString());
or
MessageBox.Show(txtSource.GetLineFromCharIndex(txtSource.Text.IndexOf("sample")).ToString());
請考慮添加關於您的代碼如何解決OP問題的解釋。 – 2017-01-09 14:23:11
如果一個線滾出文本框的結束到下一個?您是否想將其作爲第二行或僅將CR + LF對計爲換行符? – Belogix 2013-03-04 15:23:09
@Belogix我想只將CR + LF作爲換行符。謝謝:) – Luke 2013-03-04 15:30:25