VB Windowsフォームアプリケーション..プログラムの一部に設定項目があり、ユーザーが設定項目を入力できるアプリケーションを開発しています。メインフォーム上で設定メニューのメニューバー項目をクリックすると、メニューが開きます。これは問題ありませんが、設定メニューが閉じられるまでメインフォームは再びアクティブにならないはずです。これは現時点では起こりません。メインフォームは単にフォアグラウンドになり、設定フォームはバックグラウンドになります。これを処理するために、子フォームでイベントをコーディングすると、子ウィンドウがコントロールを失い、メインフォームのゲインコントロール..私は、メインフォーム上で次のように関数をコーディングすると思ったが、それはすべてのフォームのために追加する必要があり、それを閉じる前に、子供が実際に開いていることを確認する必要があるため、 。親ウィンドウがフォーカスを取得すると、自動的にウィンドウが閉じます
Private Sub Form1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.GotFocus
MailSettingsWindow.Close()
RentalSettingsWindow.Close()
End Sub
私は上記のサブ・ルーチンを離れなかったし、私が探していただけのように動作にShowDialogを使用してのrecomendationごとに以下のコードを使用していました。
Private Sub MailingAndEmailSettingsToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MailingAndEmailSettingsToolStripMenuItem.Click
Dim MailConfig As New MailSettingsWindow()
MailSettingsWindow.Showdialog()
End Sub
フォーカスを変更する**非破壊**アクションでなければなりません。 Windowsはマルチタスキングオペレーティングシステムであり、ユーザーはマルチタスクを実行できることを期待しています。 *あなたのアプリケーションが違った動作*をしていると、あなたのパターンが「より良い」か「革新的」であっても、混乱し、混乱し、恐らくあなたを責めるでしょう。ユーザーは、画面上の情報や物事を無断で閉じることなく、アプリ内の別のウィンドウにフォーカスを合わせることができるはずです。特にウィンドウを閉じない限り、ウィンドウを閉じないでください。 –
理解できる..しかし、ユーザーがアプリケーションの設定ウィンドウに入ると、そのウィンドウを開いたままにすることはできず、変更を加えて保存したり、単に閉じるボタンをクリックするか、キャンセルするまでアプリケーションを使用できるはずですボタン。 – Skindeep2366
ですから、設定のウィンドウが閉じるまで、親フォームをブロックする必要がありますか? – Jaxedin