3
我想知道是否有可能在展現出RichEditBox的行號(在單獨的列)UWPC#,或者有其他的方式來獲得它。 我正在尋找解決這個問題的方法......對我來說這似乎很奇怪,沒有關於它的文檔:我只需要一個簡單的文本編輯器。 Windows 10有很多應用程序實現它,我拒絕認爲這是不可能的。顯示行號
這僅僅是從CodeWriter,代碼編輯器應用程序的示例。 有什麼想法?
我想知道是否有可能在展現出RichEditBox的行號(在單獨的列)UWPC#,或者有其他的方式來獲得它。 我正在尋找解決這個問題的方法......對我來說這似乎很奇怪,沒有關於它的文檔:我只需要一個簡單的文本編輯器。 Windows 10有很多應用程序實現它,我拒絕認爲這是不可能的。顯示行號
這僅僅是從CodeWriter,代碼編輯器應用程序的示例。 有什麼想法?
我實現了一個關於列表和RichEditBox的「結果」思考。現在,解決方案不好,,大約50行後鍵入它是地獄laggy,但至少我試過,'因爲這個問題對我也很重要。
所以,我設計了一個網格一個ListView和RichEditBox有兩列
<ScrollViewer>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<ListView Grid.Column="0" Name="LineNumbers" ScrollViewer.VerticalScrollMode="Disabled" ScrollViewer.VerticalScrollBarVisibility="Disabled"></ListView>
<RichEditBox Grid.Column="1" x:Name="RebText" TextChanged="RebText_TextChanged" ScrollViewer.VerticalScrollMode="Disabled" ScrollViewer.VerticalScrollBarVisibility="Disabled"></RichEditBox>
</Grid>
</ScrollViewer>
在後面的代碼我加了這樣一條:
private void RebText_TextChanged(object sender, RoutedEventArgs e)
{
//Clear line numbers
LineNumbers.Items.Clear();
int i = 1;
//Get all the thext
ITextRange text = RebText.Document.GetRange(0, TextConstants.MaxUnitCount);
string s = text.Text;
if (s != "\r")
{
//Replace return char with some char that will be never used (I hope...)
string[] tmp = s.Replace("\r", "§").Split('§');
foreach (string st in tmp)
{
//String, adding new line
if (st != "")
{
LineNumbers.Items.Add(i++);
}
//No string, empty space
else
{
LineNumbers.Items.Add("");
}
}
}
}
我認爲.clear()方法和每次讀取所有行都不是一個好習慣。但是如果你需要最多50條線路的快速解決方案,這個MAYBE就是這樣。
*「我在尋找解決這個問題的辦法。」* - 哪一個?您已經詢問了兩個不同的功能:顯示行號和檢索行號(推測來自內容)。 – IInspectable
我想在顯示行號的richeditbox側面有一列。 根據實施情況,必須獲取行號的事實可以是相關的或不相關的。這是舊的和低效率的解決方案,它們使用在文本編輯期間更新內容的堆疊面板。 – GiacomoFrisoni
不能這樣做......我試着用ListView解決方案,但它看起來很醜,我刪除了我爲它製作的項目和回購。真的沒有人知道如何用RichEditBox(而不是RichTextBox!)管理LINE NUMBERS? – Martinocom