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

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

C# と VB.NET の入門サイト

RadioButtonの初期設定とMDI子フォームとの動作に

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■102995 / inTopicNo.1)  RadioButtonの初期設定とMDI子フォームとの動作に
  
□投稿者/ みか (17回)-(2024/03/09(Sat) 20:26:21)

分類:[VB.NET/VB2005 以降] 

何故、「RadioButtonの初期設定」の後に、再びfrmchild.Show()まで戻るのかを教えてください。
戻らずにその次への「Private Sub RadioButton1_CheckedChanged・・」へと進みたいのです。
ちなみに「RadioButtonの初期設定」の部分を削除すれば、そうなります。


Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        'このフォームを MDI コンテナとして設定 
        Me.IsMdiContainer = True
    End Sub

    '子フォームを開く
    Private Sub スタートToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles スタートToolStripMenuItem.Click
        Dim frmchild As New Form2
        frmchild.MdiParent = Me
        frmchild.Show()
    End Sub
End Class


Public Class Form2
    Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        'RadioButtonの初期設定 
        RemoveHandler RadioButton1.CheckedChanged, AddressOf RadioButton1_CheckedChanged
        RadioButton1.Checked = True
        AddHandler RadioButton1.CheckedChanged, AddressOf RadioButton1_CheckedChanged

        Stop    '動作の確認の為、一旦止める。
    End Sub     'ここから何故か frmchild.Show() に戻るのが不思議です。

    Private Sub RadioButton1_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton1.CheckedChanged

    End Sub
End Class

引用返信 編集キー/
■102996 / inTopicNo.2)  Re[1]: RadioButtonの初期設定とMDI子フォームとの動作に
□投稿者/ KOZ (436回)-(2024/03/10(Sun) 00:34:26)
2024/03/10(Sun) 00:46:33 編集(投稿者)
Friend WithEvents RadioButton1 As RadioButton

Private Sub RadioButton1_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton1.CheckedChanged

End Sub

このように書くと、WidthEvent をつけたフィールドはプロパティとしてコンパイルされ、次の様になります。

Private _RadioButton1 As RadioButton

Friend Property RadioButton1 As RadioButton
    Get
        Return _RadioButton1
    End Get
    Set(value As RadioButton)
        If _RadioButton1 IsNot Nothing Then
            RemoveHandler _RadioButton1.CheckedChanged, AddressOf RadioButton1_CheckedChanged
        End If
        _RadioButton1 = value
        If _RadioButton1 IsNot Nothing Then
            AddHandler _RadioButton1.CheckedChanged, AddressOf RadioButton1_CheckedChanged
        End If
    End Set
End Property

Private Sub RadioButton1_CheckedChanged(sender As Object, e As EventArgs) ' Handles は無くなる

End Sub

なので次のコードを実行すると

RemoveHandler RadioButton1.CheckedChanged, AddressOf RadioButton1_CheckedChanged  'イベントが解除される
RadioButton1.Checked = True                                                       '値が変更されても飛ばない 
AddHandler RadioButton1.CheckedChanged, AddressOf RadioButton1_CheckedChanged     '変更された後なので飛ばない

ということになります。

引用返信 編集キー/
■102998 / inTopicNo.3)  Re[2]: RadioButtonの初期設定とMDI子フォームとの動作に
□投稿者/ みか (18回)-(2024/03/10(Sun) 19:14:35)
No102996 (KOZ さん) に返信

折角のお教えも、どこをどのように変えれば良いのか、よく分からなかったのですが、
でも例え 一旦frmchild.Show() に戻ったとしても問題はないようですので、
このまま使うことにしたいと思います。

引用返信 編集キー/
■103001 / inTopicNo.4)  Re[3]: RadioButtonの初期設定とMDI子フォームとの動作に
□投稿者/ KOZ (437回)-(2024/03/11(Mon) 11:54:27)
No102998 (みか さん) に返信
> 折角のお教えも、どこをどのように変えれば良いのか、よく分からなかったのですが、
> でも例え 一旦frmchild.Show() に戻ったとしても問題はないようですので、

製作者の意図は、RadioButton1.Checked = True にしたときイベントを起こしたくなかったのでは?
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ