2017-12-27 24 views
0

私はvb.netアプリケーションを開発中です。私はフォームを持っているとメールを送信ボタンをクリックすると、メールの詳細を入力し、OKとキャンセルボタンがあるメールを送信する別のフォームを開きます。コードの下にフォーム2を開くにVB.netダイアログフォームを閉じたときのフォームの更新と無効化ボタン

が使用され、Form1ので

Private Sub Button1_Click() 
    Dim obj As New Form2 
    obj.ShowDialog(Me) 
End Sub 

メールフォーム2から送信された場合にのみ有効にする必要がありボタンを算出あります。ユーザーがフォーム2でキャンセルボタンをクリックすると、フォーム1でボタンの必要性を無効にすることができます。それは起こっていない。以下は私のコード、コードの下Form1の

Private Sub Button2_Click() 
     Dim obj As New Form1() 
     obj.initinfo(System.Windows.Forms.DialogResult.Cancel) 
     Me.Close() 
    End Sub 

は、上記のコードは効果がありません

Friend Sub initinfo(result As DialogResult) 
    If (result = DialogResult.Cancel) Then 
     Me.Refresh() 
     Me.Activate() 
     Button2.Enabled = False 
    End If 
End Sub 

追加されています。提案をお願いします。あなたはForm2の上のForm1の新しいインスタンスを作成している事前 サンギータ

+0


Class Form2 (...) Public Property UserChoice As Boolean (...) Private Sub Button1_Click() Me.UserChoice = True Me.Close() End Sub Private Sub Button2_Click() Me.UserChoice = False Me.Close() End Sub (...) End Class 

フォームは 'でbutton2'されましたか?あなたは同じ形式でコードを生成していますか? 'result = dialogresult.Cancel'ラリーが実行されたかどうかを見るために' MsgBox( "aa") 'を追加してみてください。あなたがボタン2がどこにあるかを指定する必要がある場合よりも起動します:' form1.button2.enabled = false' –

答えて

0

Form2でButton2(キャンセルボタンと思われる)が押された場合、Button1を無効にしたいとします。 [プロパティ]ウィンドウで


肯定応答ボタン(のは、Button1を言わせて)プロパティButton1.DialogResult = DialogResult.OK

はForm2のは、これはどの知ってみましょう設定してお使いのキャンセルボタンのプロパティを設定し

Form2.Button2.DialogResult = DialogResult.Cancel

Form1の
Form2.AcceptButton = Button1 
Form2.CancelButton = Button2 

のフォームを使用して応答を評価します。DialogResultプロパティ:
(適切に処分するために使用するブロックで囲む()オブジェクトの作成)

Private Sub Button1_Click() 
    Using obj As New Form2 
     obj.ShowDialog(Me) 

     If obj.DialogResult = Windows.Forms.DialogResult.Cancel Then 
      Me.Button2.Enabled = False 
     End If 
    End Using 
End Sub 


もう一つの方法。
Form2でカスタム結果プロパティを作成し、フォームが終了したときの状態を確認します。 Form1の

Private Sub Button1_Click() 
    Using obj As New Form2 
     obj.ShowDialog(Me) 

     If obj.UserChoice = False Then 
      Me.Button2.Enabled = False 
     End If 

     'Or -> 
     Me.Button2.Enabled = obj.UserChoice 
    End Using 
End Sub 
1

おかげで、この新しいインスタンスは、元のフォームを参照するが、新しいフォームを作成していません。

1.Create Form1上にボタンのプロパティ:後

は正しい手順です。

Public ReadOnly Property BtnSubmit As Button 
    Get 
     Return button1 
    End Get 
End Property 

2. Form2のForm1のプロパティを作成します。

If (Not (Form1Instance) Is Nothing) Then 
    Form1Instance.BtnSubmit.Enabled = false 
End If 

をお使いの場合には、それは次のようになりますForm2のをインスタンス化しながら、

Public Property Form1Instance As Form1 
    Get 
    End Get 
    Set 
    End Set 
End Property 

3.Now、次のように使用し、Form1Instanceプロパティ

Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) 
    Dim f2 As Form2 = New Form2 
    f2.Form1Instance = Me 
    f2.Show 
End Sub 

4.OnのForm2の基準とMeを渡します:

Form1Instance.initinfo(System.Windows.Forms.DialogResult.Cancel) 

私はあなたがそのアイデアを得ることを願っています。

関連する問題