質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

2回答

4114閲覧

RichTextBoxが持つコントロールVScrollBarにアクセスしたい

sheephuman

総合スコア112

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2017/06/03 13:32

C#万年初心者です。

散々調べて分からなかったので質問します。
Sticky Noteの機能を再現しようとしています。
Windows10のSticky Noteには

イメージ説明

このように、スクロールバーを隠せるようになっているようです。マネしたくて色々試しましたが、ちょっと無理そうです。

** 試したこと**
Change width of scrollbars を参考に

foreach (VScrollBar ctrl in richTextBox1.Controls) if (ctrl.GetType() == typeof(VScrollBar)) { ctrl.Width = 100; }

などと弄ってみました。
しかし、ロードイベントやコンストラクタ等に入れても反応がありません。悲しいデス。

次に考えたのは、既存のクラスにプロパティを追加すればいいのではという事です。

で、ユーザコントロールにRichTextBoxを継承させて、

public partial class RichTextBoxVscroolWidh : RichTextBox { public RichTextBoxVscroolWidh() { InitializeComponent(); } VScrollBar VWidth; public int VScroolWidth { set{ VWidth.Width = value; } get { return VWidth.Width; } }

と書いてみました。

Form側で
RichTextBoxVscroolWidh RscroolWidth = new RichTextBoxVscroolWidh();

RscroolWidth.Width = 10;

などとしてみましたが反応はありません。

何か根本的に足りない気がするのですが、手掛かりがありません。
宜しかったら教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

隠せる様にだけしたいならば

csharp

1richTextBox1.MouseEnter += (self, ev) => { 2 richTextBox1.ScrollBars = RichTextBoxScrollBars.Vertical; 3}; 4richTextBox1.MouseLeave += (self, ev) => { 5 richTextBox1.ScrollBars = RichTextBoxScrollBars.None; 6}; 7richTextBox1.ScrollBars = RichTextBoxScrollBars.None;

マウスが入った時だけ表示するという方法もあるかと思います。スタイリッシュなスクロールバーがお好みであればオーナードローするしかないと思います。

投稿2017/06/20 08:33

mattn

総合スコア5030

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sheephuman

2017/06/20 08:47

そうですね。それはラムダ式でしたっけ。 そんな書き方も出来るんですね。ありがとうございます。 その内WPFに手を出して、クラスライブラリ化してform側で使おうなどと考えてました。
guest

0

https://stackoverflow.com/questions/1819462/winforms-adjust-width-of-vertical-scrollbar-on-checkedlistbox
の2番目のサンプルでcheckedListBoxのスクロールバー変更に成功しました。
もっとよく見ればよかったか。

イメージ説明

・・・ですが何といいますか、現在実行してるwindowsアプリにまで影響を与えるようで、みんな太くなってしまいました。
とりあえず自己解決の方向で頑張ります。

 一応、代替となるような処理はもう実装してあります。
これはマウスカーソルがRichTextBoxの右端に入った場合、スクロールバーを表示させるサンプルです。 https://box.yahoo.co.jp/guest/viewer?sid=box-l-jjsgnkx53gwi3lt2r7nmvpbfvm-1001&uniqid=f802edc3-1536-4814-aad5-b0e368a87548&viewtype=detail 
http://d.hatena.ne.jp/among_ev/20110320/1300593343 の流用です。

投稿2017/06/03 14:09

編集2017/06/18 12:29
sheephuman

総合スコア112

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sheephuman

2017/06/06 11:20

自己回答のサンプルはWindowsのシステム全体に影響を与えてしまいますし、動作も少し重いので、依然としてプロパティとして追加してアクセスする方法を求めています。 ご存知でしたら教えてください。
ebiryo

2017/06/06 23:55

Fromsじゃないとダメなんですよね? WPFなら簡単にできるのですが。。
sheephuman

2017/06/07 01:05

WPFはちょっと苦手なんですが・・・ その場合、自分で実行できるよう、Form全体のコードを載せてください。
sheephuman

2017/06/07 01:19

あるいはプロジェクトファイルをアップロードしてもらえると助かります。
ebiryo

2017/06/07 07:20

「Form全体のコード」とはどういう意味でしょうか?  WPFのプロジェクトではなく、Forms上のElementHostにWPFコントロールを埋め込んだコードのことですか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問