ホームページ  >  記事  >  バックエンド開発  >  C#で2つのリッチテキストボックスコントロールのスクロールバーの同期スクロールを実装する方法の詳細な説明

C#で2つのリッチテキストボックスコントロールのスクロールバーの同期スクロールを実装する方法の詳細な説明

黄舟
黄舟オリジナル
2017-05-21 10:45:402365ブラウズ

この記事では、主に C# 2 つのリッチテキストボックスコントロールスクロールバーの同期スクロールを実装する簡単な方法を紹介します。記事内の紹介は非常に詳細であり、必要な友人が読むことができる特定の参照および学習価値があります。一緒に見てください。

前書き

記事などを比較する必要がある場合があり、テキストを 2 つのリッチテキストボックス コントロールに配置することがよくありますが、スクロールして同期して表示する必要がある場合は、より優れた表示効果を実現できます。

もちろん、コントロールやカスタムコントロールをオーバーロードするという従来の方法でも目的を達成できますが、初心者や一度だけこのコントロールを使いたい人にとっては非常に面倒です。そこで次に、リッチテキストボックスのスクロールバー同期機能を簡単かつ迅速に実装する方法を紹介します。

方法は以下の通りです:

まず、winformフォームで2つのリッチテキストボックスコントロールを作成します

私は最初の方法をよく使います

、現在のマウスが配置されているリッチテキストボックス コントロール内の行番号を取得します


private int GetLineNoVscroll(RichTextBox rtb)
    {
      //获得当前坐标信息
      Point p = rtb.Location;
      int crntFirstIndex = rtb.GetCharIndexFromPosition(p);
      int crntFirstLine = rtb.GetLineFromCharIndex(crntFirstIndex);
      return crntFirstLine;
    }

2 番目の方法は、リッチテキストボックス コントロール内の特定の行に素早く移動することです

private void TrunRowsId(int iCodeRowsID, RichTextBox rtb)
    {
      try
      {
        rtb.SelectionStart = rtb.GetFirstCharIndexFromLine(iCodeRowsID);
        rtb.SelectionLength = 0;
        rtb.ScrollToCaret();
      }
      catch
      {

      }
    }

これら 2 つのメソッドで、スクロールを実現できますバー同期機能。

考え方は次のとおりです: まず、richtextbox1 がスクロールするときに、GetLineNoVscroll メソッドを通じて、richtextbox1 のマウスに対応する行番号を取得します。次に、

TrunRowsId メソッドを使用して、richtextbox2 で取得した richtexbox1 の行番号を見つけます。これにより、richtextbox2 が richtexbox1 のスクロール バーと一緒にスクロールします

richTextBox1 の VScroll

event

に次のコードを追加します。個人ですか? 、 は特定のオフセットを表します。レイアウト上の理由 (コントロール サイズなど) により、2 つのリッチテキストボックスが同期していない可能性があります。通常は 0 を記述します。ギャップが大きすぎる場合は、整数値を自分で調整してください。 rreee最後に、2 つのスクロール バーが同期してスクロールされます

概要

以上がC#で2つのリッチテキストボックスコントロールのスクロールバーの同期スクロールを実装する方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。