VB.NET(WinForms)では、ComboBox
を継承するコントロールに、DropDownStyle
プロパティのDropDown
を継承させるように強制する方法を教えてください。DropDownStyleプロパティを強制的に継承するDropDownStyleプロパティ
0
A
答えて
3
DropDownStyleプロパティは、オーバーライドできません。これにより、強制的に行うことのできる量が制限されます。 .NET Frameworkには、プロパティを隠すだけのアプローチがあります。似て:
Private Const DefaultStyle As ComboBoxStyle = ComboBoxStyle.DropDown
Public Sub New()
MyBase.DropDownStyle = DefaultStyle
End Sub
<Browsable(False), EditorBrowsable(EditorBrowsableState.Never)>
<DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)>
Public Overloads Property DropDownStyle As ComboBoxStyle
Get
Return MyBase.DropDownStyle
End Get
Set(value As ComboBoxStyle)
MyBase.DropDownStyle = DefaultStyle
End Set
End Property
閲覧可能な属性は、設計者から財産を隠し、EditorBrowsable属性は、テキストエディタからそれを隠すDesignerSerializationVisibilityは、それがのInitializeComponent()メソッドに書き込まないようにしています。
しかし、実際にはComboBoxにキャストしてプロパティ設定ツールをバイパスし、MyBase.DropDownStyleプロパティを任意の値に割り当てたい場合は、クライアントコードを停止しません。 Overloads
の責任は、基本メンバーを隠し、それを上書きしないことのみです。技術的には、CreateParamsをオーバーライドすることでそれを打ち負かすことはできますが、そのプロパティはComboBoxのコードであまりに頻繁に使用されています。これはそれが得られるほど良いです。フレームワークにとって十分です。
関連する問題
- 1. 継承CSSプロパティ
- 2. Javascriptで静的プロパティと非静的プロパティの両方を継承するには?
- 3. 継承するstyle.displayプロパティ
- 4. プロパティ継承動作
- 5. 継承された静的プロパティのリフレクション
- 6. PHPの継承と静的メソッドとプロパティ
- 7. 継承されたプロパティへのアクセスを制限するC#
- 8. Pythonの多重継承プロパティ
- 9. Objective-Cプロパティ/継承/デザインアドバイス
- 10. Flash/ActionScript:コンポーネントのプロパティ継承
- 11. C#:プロパティのOOP継承
- 12. DropDownStyle(DropDownList)でComboBoxのカスタム外枠を作成する方法
- 13. 私のカスタムコントロールライブラリの依存プロパティの継承を超える継承
- 14. JavaBeanプロパティにYAMLタグを強制的に適用する
- 15. 継承されたプロパティの型を継承型に変更する
- 16. C#ComboBoxのDropDownStyleを=シンプルまったく実行
- 17. 継承継承ストラテジーを使用してディスクリミネータを強制的に実行できるか
- 18. CSS3アニメーション:0%キーフレームのプロパティを継承
- 19. 親pomからプロパティを継承
- 20. 抽象的なプロパティを持つジェネリッククラスの継承
- 21. Visual Studio 2010のプロジェクト(.vcproj)プロパティの継承
- 22. 要素の継承プロパティの削除(ボックスサイズ)
- 23. BEMと他のクラスの継承プロパティ
- 24. 教義クラステーブル継承プロパティは、クエリ
- 25. PHPの継承 - アクセス両親のプロパティ
- 26. クラステーブル継承の子プロパティのDoctrine2フィルタクエリ
- 27. WPFページ要素へのプロパティの継承
- 28. LESS:不要なプロパティの継承
- 29. Typescriptの継承と汎用プロパティ
- 30. オントロジー間のプロパティ継承(SubPropertyOfなし)
異なる値に 'DropDownStyle'設定からクライアントコードを停止するには、' OnDropDownStyleChanged'をオーバーライドして、技術的に戻って ''に続いDropDownStyle'値を変更してしまう 'MyBase.DropDownStyle = DefaultStyle' –
@RezaAghaei を設定することができますドロップダウン。子どものDropDownStyleイベントがトリガされたときに、きれいではない望ましくない副作用を引き起こす可能性があります。 – Makaveli84
@ Makaveli84クライアントコードを使用してDropDownStyleを変更しないように、*既存のソリューションに加えて*あなたは 'OnDropDownStyleChanged'が単に' DropDownStyleChanged'イベントを発生させる責任があることを知っておくべきです。したがって、イベントを発生させることなくオーバーライドすることは安全です。私が言ったことを理解するには、 'DirectCast(derivedComboBox、ComboBox).DropDownStyle = ComboBoxStyle.DropDownList'を試してみてください。 –