C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.64915 の関連記事表示

<< 0 >>
■64915  Re[1]: VB.NetでModuleからボタンを操作したい
□投稿者/ shu -(2013/01/22(Tue) 12:53:36)
    No64910 (MP枯渇ウィザード さん) に返信
    
    案1)ボタンだけのフォームを作りそこから派生させる。
    案2)ボタン部分をユーザーコントロールにする
    案3)制御用のコンポーネントを作成する。
    
    
    案3のコンポーネントについて書きます。
    新規追加でコンポーネントを追加します。
    Designer.vbファイルはそのままで
    vbファイルを例えば以下のように記述します。
    Imports System.ComponentModel
    
    <ProvideProperty("FuncNo", GetType(Windows.Forms.Control))> _
    Public Class Component1
        Implements IExtenderProvider
    
        Friend ButtonNo As New Dictionary(Of Button, String)
    
        Public Function CanExtend(extendee As Object) As Boolean Implements System.ComponentModel.IExtenderProvider.CanExtend
            If TypeOf extendee Is Button Then
                Return True
            Else
                Return False
            End If
        End Function
    
        Public Function GetFuncNo(ByVal ctrl As Windows.Forms.Control) As String
            If Not TypeOf ctrl Is Button Then Return Nothing
            Dim btn = DirectCast(ctrl, Button)
            Dim ret As String = Nothing
            If ButtonNo.TryGetValue(btn, ret) Then
                Return ret
            Else
                Return Nothing
            End If
        End Function
    
        Public Sub SetFuncNo(ByVal ctrl As Windows.Forms.Control, ByVal value As String)
            If Not TypeOf ctrl Is Button Then Exit Sub
            Dim btn = DirectCast(ctrl, Button)
            If String.IsNullOrEmpty(value) Then
                If ButtonNo.ContainsKey(btn) Then
                    ButtonNo.Remove(btn)
                End If
            Else
                ButtonNo(btn) = value
            End If
        End Sub
    
        Public Property Enabled As Boolean
            Get
                If ButtonNo.Count > 0 Then
                    Return ButtonNo.Keys(0).Enabled
                Else
                    Return False
                End If
            End Get
            Set(value As Boolean)
                For Each btnNo In ButtonNo
                    btnNo.Key.Enabled = value
                Next
            End Set
        End Property
    End Class
    
    一度コンパイルします。
    するとフォームデザイン状態でツールボックスから作成したComponent1を選ぶことが出来るようになります。
    Component1をフォームに貼りつけると
    各ButtonコントロールにToolTipのような拡張プロパティ『Component11のFuncNo』というのが表示されるので
    そこに適当に文字を入力します。Func1Buttonなら1など。
    後はコード上でComponent11.EnabledをTrue,Falseに変えるとFuncNoを設定したButtonのEnabledがすべて変わります。
    
    
記事No.64910 のレス /過去ログ109より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -