1

ReadOnly プロパティを使用して System.Windows.Forms.ComboBox コントロールを拡張したいと考えています。これにより、ReadOnly = true の場合に、選択した項目のテキスト (ラベルと同様) が表示されます。(Enabled=false を設定することによって達成される無効な外観は好きではありません)

winformsでこれを行うにはどうすればよいですか? ASP.NET では非常に単純で、Render メソッドをオーバーライドするだけで済みました。ただし、winforms ではそれほど単純ではないようです。

私が収集したものから、私はする必要があります

a) OnPaint メソッドをオーバーライドする

b) this.SetStyle(ControlStyles.UserPaint, true) を呼び出して、OnPaint が呼び出されるようにします。

でも今は、自分ですべての塗装をしなければならないようです。本当?ReadOnly = false の場合、ベース ComboBox にコントロールの描画を処理させることはできませんか? また、どの ControlStyles を使用すればよいですか?

4

2 に答える 2

1

Windows が行うことを行います。
コンボボックスにアイテムを 1 つだけ配置し、それを選択して有効にします。

于 2008-12-27T19:41:27.700 に答える
0

ComboBox コントロールを UserControl に配置します。UserControl はほとんどのプロパティとイベントを通過しますが、.ReadOnly プロパティに応答して、ComboBox コントロールを非表示にし、代わりに ReadOnly 編集ボックスを表示します。

于 2008-12-27T19:19:36.747 に答える