Web ブラウザー コントロールでスクロールバーを動作させようとしています。ただし、カスタムメッセージボックスのメッセージを表示するために使用するので、デフォルトで表示されるように、必要がなくてもスクロールバーを表示したくありません。これを回避するために、コントロールのスクロールバーを無効にし、代わりに Panel などの別のコントロールでスクロールバーを使用することにしました。この方法では、ブラウザ ページのコンテンツが大きすぎて収まらない場合にのみ表示されます。
これはあまりうまくいきませんでしたが、これが有効な解決策であると思われる StackOverflow でさえ、かなりの数の投稿を読みました。一例は、ここでソリューションを使用しようとしたときです。
Panel コントロールに含まれる WebBrowser コントロールのスクロールの問題
Webブラウザでスクロールバーが無効になっている場合、パネルでもスクロールバーを使用できないようです。これは、デザイン モードでテストした場合に発生したようです。これを克服するために、パネル内の Web ブラウザーの後ろに画像ボックスを追加してみました。デザインモードでは機能しましたが (画像ボックスと Web ブラウザーのサイズを変更すると、パネルでスクロールバーが有効になります)、実行時には機能しませんでした (画像ボックスを Web ブラウザーコントロールのサイズに変更するコードを追加しました -これ自体は、スクロール可能なコンテンツのサイズに合わせて常にサイズ変更されます)。
また、ScrollableRectangle のサイズがコントロールのサイズよりも大きいかどうかに基づいて、Web ブラウザーのスクロールバーをプログラムで有効または無効にしようとしました。これは理論的には問題ありませんが、ScrollbarsEnabled プロパティが変更されるたびにコントロール内のすべてのテキストがクリアされ、スクロールバーがない状態に戻ります。
コントロールでキーが押されるたびに効果的に呼び出される次のコードでこれを行っています。
if (Output.Document.Body != null)
{
if (Output.Document.Body.ScrollRectangle.Size.Height > Output.Size.Height
|| Output.Document.Body.ScrollRectangle.Size.Width > Output.Size.Width)
Output.ScrollBarsEnabled = true;
else
Output.ScrollBarsEnabled = false;
}
else
Output.ScrollBarsEnabled = false;
また、アプリ内で使用される HTML エディターのソリューションも必要であることに注意することも重要です。そのため、理想的には、どのソリューションもページ読み込みイベントなどに依存しないようにする必要があります。デザイン モードがオンに設定されています (これは、HTML エディターとして機能するために必要です)。ただし、この特定の状況では、より良い解決策がなければ、デフォルトのスクロールバーを有効にすることに頼ることができます.
編集:明確にするために、HTML コンテンツ内のスクロールバーについて話しているわけではありません。HTML は単にテキストの柔軟な書式設定を可能にするために使用されているだけなので、問題はありません。ブラウザ コントロール自体のスクロールバーについてのみ話しています。
どんな助けでも大歓迎です。ありがとう!