| 
                 分類:[VB.NET/VB2005 以降] 
 
 お世話になります。
vb2008を使っております。
Form1のRadioButtonをクリックするとForm2が開き、Form1のPictureBoxに表示していたイメージをForm2のPictureBoxに表示するというプログラムを作っています。この時、Form2に用意したキャンセルボタンを押すとForm2を閉じるようにしたのですが、なぜか、閉じたあとすぐにまたもう一度Form2が開くのです。で、その開いた二度目のForm2で、もう一度キャンセルボタンをクリックすると、ちゃんとForm2が閉じられます。
最初そのバグを発見した時、Form1のRadioButtonがForm2を閉じた後もクリック状態のままだったので、ここにRadioButton8.Checked = Falseを追加したのですが、二度Form2が開いてしまう状態は変わらず、しかしRadioButtonはRadioButton8.Checked = Falseになっていました。
私は一度目のクリックでForm2を閉じるようにしたいので、どのようにすれば二度開かないようになるのか、教えていただけないでしょうか。
ちなみにForm2では、表示したイメージに加工を施した後、OKボタンをEnabled=Trueにして(開いた時点ではFalse)、OKをクリックすると、Form2を閉じてForm1にForm2で加工した結果を表示させるのですが、OKの場合は二度Form2が開くことはありません。
以下がそのコードです。RadioButton8とかButton3とかになっている点は飛ばして下さい。
'form1
    Private Sub RadioButton8_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton8.CheckedChanged
        If RadioButton8.Checked = True Then
            
      'form2作成
      Dim settingForm As Form2
            settingForm = New Form2
            settingForm.Owner = Me
            RadioButton8.Checked = False
            'form2に画像を表示
            settingForm.PictureBox1.Image = PictureBox1.Image
            'form2でokが押された時のイベント
            If settingForm.ShowDialog() = Windows.Forms.DialogResult.OK Then
                '切り取った画像をform1に表示
                PictureBox1.Image = settingForm.PictureBox1.Image
                RadioButton8.Checked = False
            'form2でキャンセルが押された時のイベント
            ElseIf settingForm.ShowDialog() = Windows.Forms.DialogResult.Cancel Then
                RadioButton8.Checked = False
            End If
            settingForm.Dispose()
        End If
    End Sub
'form2
    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       
        'ok
        Button1.DialogResult = Windows.Forms.DialogResult.OK
        'キャンセル
        Button3.DialogResult = Windows.Forms.DialogResult.Cancel
    End Sub
   
  'キャンセル
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Close()
    End Sub
  |