2

TextBoxコントロールをフォームエディタにドラッグして作成した.NetWindowsアプリケーションのすべてのテキストボックスコントロールには、次のデフォルトプロパティが必要であると想定します(一部のテキストボックスインスタンスはこれらのプロパティを上書きできます)。

テキストの配置:中央
のサイズ変更:コンテンツごと
ドック:左、上、右

今では、必要になるたびにこれらのプロパティを設定するのは面倒で手動で退屈な作業になります。これらのプロパティを「アセンブリレベル」でデフォルト設定できる方法はありますか。ユーザーコントロールで問題が解決することはわかっていますが、これはコストのかかる解決策であると考えており、この問題にはよりシンプルで洗練された解決策があるはずだと思います。ありがとう

4

3 に答える 3

1

ここには2つのオプションがあります。

1つ目は、フォーム上のすべてのネストされたコントロールを反復処理するメソッドを作成し、テキストボックスを選択してプロパティを変更してから、フォームの初期化コードでこのプロパティを呼び出すことです。

もう1つは、問題のテキストボックスコントロールを継承し、コンストラクターでプロパティを好みに合わせて変更することです(プロパティをシャドウイングして、プロパティグリッドにさまざまなデフォルト値を公開することもできます)。フォームデザイナでコントロールを使用できるようにするには、コントロールを使用する予定の場所とは別のプロジェクトで作成し、最初のプロジェクトで参照する必要があります。

于 2009-01-09T16:18:15.697 に答える
0

はい、カスタムコントロールを継承し、デフォルトのコンストラクターでデフォルトのプロパティを設定します。

例:

   class Class1:TextBox{
        public Class1():base(){
            this.TextAlign = HorizontalAlignment.Center;
            this.Dock = DockStyle.Left;
        }
    }
于 2009-01-09T16:15:47.140 に答える
0

私のプロジェクトでも同様のニーズがあります。私がしたことは、ControlAddedイベントをリッスンし、そのコントロールが目的のタイプであるかどうかを確認することでした...これらのプロパティを設定しました。

これを本当に自動化するには...そのようなロジックをフォームベースクラスに配置する必要があります。私の場合、すべてのフォームは、グラデーションの背景をペイントするロジックを備えたベースフォームから継承し、フォームの標準プロパティ(アイコン、境界線など)を設定します。

次の例では、「MGButton」というコントロールを使用して、そのプロパティを設定します。ここでCASEを実行して、すべてのコントロールをカスタマイズできます。また、カスタムプロパティを使用して、デフォルトを使用しない場合を確認します。

Private Sub FormBase_ControlAdded(ByVal sender As Object, ByVal e As System.Windows.Forms.ControlEventArgs) Handles MyBase.ControlAdded
        If e.Control.GetType().ToString = "CommonUI.MGButton" Then
            Dim boton As CommonUI.MGButton = CType(e.Control, CommonUI.MGButton)
            With boton
                If CType(.Tag, String) <> "OverrideDefaults" Then
                    .ColorBorde = System.Drawing.Color.Black
                    .ColorBordeFocus = System.Drawing.Color.Transparent
                    .ColorFinal = System.Drawing.Color.NavajoWhite
                    .ColorFinalDisabled = System.Drawing.Color.WhiteSmoke
                    .ColorFinalOver = System.Drawing.Color.Sienna
                    .ColorInicial = System.Drawing.Color.Peru
                    .ColorInicialDisabled = System.Drawing.Color.SeaShell
                    .ColorInicialOver = System.Drawing.Color.Sienna
                End If
            End With       
        End If
    End Sub
于 2009-01-09T16:30:08.653 に答える