|
分類:[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
|