2015-01-26 183 views
0

我正在研究alittle寫作遊戲,並遇到了一個問題。我有一個richtextbox,其中包含一個帶有很多運行的段落,我希望它滾動到我有的一​​些運行。我有一個List對象,其中包含RTB中的所有內聯,並且Select()方法由於某種原因不起作用,可能是因爲它只是現成的rtb。任何想法的方式滾動到選定的單詞? 我的代碼:C#WPF RichTextBox滾動到文本?

private bool isKey = false; 
    private Paragraph p; 
    private List<Inline> inlineList; 
    private int inlineIndex = 0, wpm = 0, wordIndex = 0, lineIndex = 0; 
    private string[] words; 
    public MainWindow() 
    { 
     InitializeComponent(); 
     p = new Paragraph(); 
     foreach (string s in words) 
     { 
      p.Inlines.Add(s); 
      p.Inlines.Add(" "); 
     } 
     WordBox.Document.Blocks.Clear(); 
     WordBox.Document.Blocks.Add(p); 
     inlineList = p.Inlines.ToList(); 
     inlineList[0].Background = Brushes.LightGray; 
     this.Activate(); 
     InputBox.Focus(); 
    } 
    //The Method I want to put the scrolling feature in: 
    private void MoveWord() 
    { 
     if (inlineIndex + 2 < inlineList.Count) 
     { 
      inlineList[inlineIndex].Background = Brushes.Transparent; 
      inlineIndex += 2; 
      inlineList[inlineIndex].Background = Brushes.LightGray; 
      WordBox.Selection.Select(inlineList[inlineIndex].ContentStart, inlineList[inlineIndex].ContentEnd); 
     } 
     else 
      MessageBox.Show(wpm.ToString()); 
    } 

例如: 的RTB包含: 餵你好這是怎麼回事 字肉片哎

而且我希望它滾動到單詞「哎」。

我試圖用Select()方法,沒有工作......

+1

向我們展示你的代碼,以及一些示例文本,以及地方磨片你想讓它滾動到。 – 2015-01-26 18:02:04

+0

@RobertHarvey我編輯:) – 2015-01-26 18:05:10

+0

你的'Select()'調用在哪裏? – 2015-01-26 18:06:06

回答

2

創建運行並添加運行(不是內聯)
保存到運行的參考(如表)
然後就叫奔跑[X] .BringIntoView()
尚未在RTB測試,但我已經用的FlowDocument和FlowDocumentViewer

做到了這一點

BringIntoView

+0

你是個天才!非常感謝!它完美的工作! – 2015-01-26 18:35:27