0

文字列を含む Scintilla.Net テキスト ボックスを設定し、最後の行までスクロールしても機能しません。

この Q & A Scintilla で自動スクロールを行う方法は? には答えがありますが、テキストの設定と同時には機能しません。

ベアボーンの再現:

private void button1_Click(object sender, EventArgs e)
{
    string s = RandomString(400);
    scintilla1.Text = s + " " + s + " " + s + " " + s + " " + s;
    scintilla1.Scrolling.ScrollBy(0, 10000);    //<-doesn't work (but does work eg in a Button2_click)
}

private static Random random = new Random((int)DateTime.Now.Ticks);
private string RandomString(int size)
{
    StringBuilder builder = new StringBuilder();
    char ch;
    for (int i = 0; i < size; i++)
    {
        ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65)));
        builder.Append(ch);
    }
    return builder.ToString();
}

テキストを設定した後、垂直方向にスクロールして最終行までスクロールする方法を知っている人はいますか?

4

2 に答える 2

1

テキストを追加した後に Refresh() を配置してみてください。

scintilla1.Text = s + " " + s + " " + s + " " + s + " " + s;
scintilla1.Refresh();

この場合、テキストボックスに配置した文字列の長さに応じて、 Refresh() を2回実行する必要があることがわかりました。

于 2013-04-30T03:05:59.533 に答える
0

結局疑問に思っている人のために、私は Scintilla を捨ててICSharpCode.TextEditorを選びました。<- これは少し不安定だったので、ICsharp.TextEditor の Digitalrune バージョンを使用しました。

ICSharpCode.TextEditor の拡張は、Scintilla に比べれば些細なことであることがわかりました。

ICSharpCode.TextEditorのもう 1 つの大きな利点は、独自の構文強調表示をカスタマイズ/構築できることです。

于 2013-04-30T03:18:57.967 に答える