2017-05-22 41 views
3

我想知道是否有可能在展現出RichEditBox的行號(在單獨的列)UWPC#,或者有其他的方式來獲得它。 我正在尋找解決這個問題的方法......對我來說這似乎很奇怪,沒有關於它的文檔:我只需要一個簡單的文本編輯器。 Windows 10有很多應用程序實現它,我拒絕認爲這是不可能的。顯示行號

enter image description here

這僅僅是從CodeWriter,代碼編輯器應用程序的示例。 有什麼想法?

+0

*「我在尋找解決這個問題的辦法。」* - 哪一個?您已經詢問了兩個不同的功能:顯示行號和檢索行號(推測來自內容)。 – IInspectable

+0

我想在顯示行號的richeditbox側面有一列。 根據實施情況,必須獲取行號的事實可以是相關的或不相關的。這是舊的和低效率的解決方案,它們使用在文本編輯期間更新內容的堆疊面板。 – GiacomoFrisoni

+0

不能這樣做......我試着用ListView解決方案,但它看起來很醜,我刪除了我爲它製作的項目和回購。真的沒有人知道如何用RichEditBox(而不是RichTextBox!)管理LINE NUMBERS? – Martinocom

回答

0

我實現了一個關於列表和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就是這樣。