none
AnyControl_sender RRS feed

  • 質問

  • Object型の変数senderButton型であるかどうか判断する

    Private Sub AnyControl_Enter(sender As Object, e As EventArgs) Handles Button1.Enter, Button2.Enter, TextBox1.Enter

            If TypeOf sender Is Button Then
                MsgBox("senderはButtonです")
            Else
                MsgBox("senderはButtonではありません")
            End If

        End Sub

    これを実行してもsenderはButtonですしか表示されません。フォームにはTextBox1,Button1,Button2.Button3を貼り付けました

    senderはButtonではありませんを表示させるにはどうすればいいのでしょうか?

    また下記の分でTrueで実行すると”TextBox1です”しか表示されません

    ”TextBox2です”や”TextBox3です”を表示するにはどうすればよいのでしょうか


        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Select Case True
                Case TextBox1.Enabled
                    MsgBox("TextBox1です")
                Case TextBox2.Enabled
                    MsgBox("TextBox2です")
                Case TextBox3.Enabled
                    MsgBox("TextBox3です")
                Case Else
                    MsgBox("3つのTextBoxはすべて使用不可です")
            End Select
        End Sub

    2015年5月15日 8:33

回答

  • こんにちは。

    senderはButtonではありませんを表示させるにはどうすればいいのでしょうか?

    TextBox1を選択してTextBox1.Enterイベントを発生させると「senderはButtonではありません」と表示されました。

    ”TextBox2です”や”TextBox3です”を表示するにはどうすればよいのでしょうか

    TextBox1.EnableがFalseの状態でButton1をクリックすれば「TextBox2です」と表示されました。

    その動きにならないということでしょうか、それとも別のオペレーションを想定されていましたか。

    その動きにならないという場合は、環境を教えてください。
    私はWindows8.1, Visual Studio 2013 Pro,  .NET Framework 4.5 で確認しました。

    (追記)
    画面起動時にTextBox1.Enterさせて、Button1.Click時に「TextBox2です」を試したければ以下を

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Me.ActiveControl = TextBox1
        TextBox1.Enabled = False
    End Sub
    
    2015年5月15日 8:47
    モデレータ

すべての返信

  • こんにちは。

    senderはButtonではありませんを表示させるにはどうすればいいのでしょうか?

    TextBox1を選択してTextBox1.Enterイベントを発生させると「senderはButtonではありません」と表示されました。

    ”TextBox2です”や”TextBox3です”を表示するにはどうすればよいのでしょうか

    TextBox1.EnableがFalseの状態でButton1をクリックすれば「TextBox2です」と表示されました。

    その動きにならないということでしょうか、それとも別のオペレーションを想定されていましたか。

    その動きにならないという場合は、環境を教えてください。
    私はWindows8.1, Visual Studio 2013 Pro,  .NET Framework 4.5 で確認しました。

    (追記)
    画面起動時にTextBox1.Enterさせて、Button1.Click時に「TextBox2です」を試したければ以下を

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Me.ActiveControl = TextBox1
        TextBox1.Enabled = False
    End Sub
    
    2015年5月15日 8:47
    モデレータ
  • ありがとうございます。まだ勉強初めて間がないので分からないことも多く申し訳ございません。

    Private Sub AnyControl_Enter(sender As Object, e As EventArgs) Handles Button1.Enter, Button2.Enter, TextBox1.Enter→この部分を打ち込んでやっているのですが AnyControl_Enterが引っ掛かっていてこれを基準にやれると思ったものですから(フォームにはTextBox1,Button1,Button2.Button3を貼り付けました)

    もう一度やり直してみます。

    2番目の意味は理解できました

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Loadでやればよいということですね

    アドバイスに感謝いたします。ありがとうございました。

    2015年5月16日 0:48