子フォームがC#を使用してアクティブなときに親フォームを無効にするにはどうすればよいですか?子フォームがアクティブなときに親フォームを無効にする方法はありますか?
答えて
Form.Show()の代わりにForm.ShowDialog()を試しましたか?
ShowDialogは、あなたのウィンドウをモーダルとして表示します。つまり、閉じられるまで親フォームと対話できません。
これは親フォームを非表示にしていませんか? – barlop
@barlop親フォームを非表示にするには、親フォームコードで 'this.Hide()'を使用します。 – vee
@veeあなたは私を読んでいません。私はなぜそれを隠すように見えるのか(私がそれを望んでいないとき)を尋ねていた。私の問題は解決しました。これはこれでしたか?http://stackoverflow.com/questions/38171607/c-sharp-winforms-how-can-i-get-the-child-form-in-front-of-parent-form-without – barlop
親フォームから子フォームのShowDialog()
またはShow()
を呼び出していますか?
ShowDialog
は、ユーザーがフォームとして使用して、フォームとして使用して、ShowDialog
に渡すことを「ブロック」します。あなたのようなものを呼ぶかもしれない親の中
:this
が親フォームである
。 Activated
のイベントハンドラを設定し、子フォームで、
Form newForm = new ChildForm();
newForm.Show(this);
その後:あなたはがは何ができるか
私のために働く! VB.Netのバージョンはこれです: 'Public childForm As New Childformclass'と' childForm.ShowDialog(Me) 'ここでMeはクラスの親(親フォーム)ですので大変ありがとうございます@Philip –
は、子フォームを表示するときに所有者として親フォームに合格することを確認することですそしてDeactivate
イベント:
private void Form_Activated(object sender, System.EventArgs e)
{
if (this.Owner != null)
{
this.Owner.Enabled = false;
}
}
private void Form_Deactivate(object sender, System.EventArgs e)
{
if (this.Owner != null)
{
this.Owner.Enabled = true;
}
}
はしかし、これは本当に奇妙な行動になります。あなたは戻って親フォームと直ちにやりとりすることはできませんが、他のアプリケーションをアクティブにするとそれが有効になり、ユーザーはそれを操作できます。
あなたは、子フォームmodalを作る代わりにShowDialog
を使用したい場合:
Form newForm = new ChildForm();
newForm.ShowDialog(this);
Form_Deactivateの代わりにForm_Closedを処理することもできますifその間にアクティブ化されている他のフォームやアプリケーションに関係なく、子フォームの存続期間中に親フォームを無効にしたいとします。 – JamesFaix
が理由だけではなく、子供が閉鎖するために親が待っていません。これはあなたが必要以上のものです。
// Execute child process
System.Diagnostics.Process proc =
System.Diagnostics.Process.Start("notepad.exe");
proc.WaitForExit();
-1:クリック/プレス/マウス/キーハンドラーでこれを行うことを敢えてしないでください。 Info:http://stackoverflow.com/questions/470256/process-waitforexit-asynchronously – quetzalcoatl
この回答はプロセスに関するものであり、FORMSに関するものではありません。誰かには役に立ちますが、質問には答えません。また、GUIスレッド上で実行すると、本当に悪い考えです。アプリのGUIは、他のプロセスが戻るまでロックされます。何か問題が生じた場合、ユーザーはアプリを終了させるためにタスクマネージャに頼らざるを得なくなります。注意して使用してください!またはそれ以上:WaitForExitではなく、いくつかの非同期ソリューションを使用します。 – ToolmakerSteve
前述のchildForm.ShowDialogを使用すると、メインフォームが無効になりますが、それでもなお非常に無効に見えます。しかし、ShowDialog()を呼び出した後、ShowDialog()およびEnable = trueの前にEnabled = falseを呼び出すと、メインフォームは無効になっているように見えます。 ChildForm_Loadで
var childForm = new Form();
Enabled = false;
childForm .ShowDialog(this);
Enabled = true;
これはどのように動作するのかわかりません。試してみると親フォームが隠されています – barlop
ChildForm child = new ChildForm();
child.Owner = this;
child.Show();
//:
private void ChildForm_Load(object sender, EventArgs e)
{
this.Owner.Enabled = false;
}
private void ChildForm_Closed(object sender, EventArgs e)
{
this.Owner.Enabled = true;
}
Form1 frmnew = new Form1();
frmnew.ShowDialog();
またMDIParent-子フォームを使用することができます。ちょうど1フォームが表示されます。この場合、MDI親
例:
child.MdiParent = parentForm;
child.Show();
として子フォームの親を設定し、子フォームは、親の内側に来ます。Form.ShowDialog()
を使用している間 希望は、これが
に役立ちますシンプルな、それが閉じるまで、あなたが親フォームと対話することができない代わりに
Form.Show();
を
Form.ShowDialog();
を使用しています。
私はそれを試してみると、それを隠すことがわかります – barlop
@Melodia
このため申し訳ありませんがC#コードではありませんが、これは、あなたが、これは簡単なはず翻訳以外にも、望むものです。
FORM1
Private Sub Form1_MouseEnter(sender As Object, e As EventArgs) Handles MyBase.MouseEnter
Me.Focus()
Me.Enabled = True
Form2.Enabled = False
End Sub
Private Sub Form1_MouseLeave(sender As Object, e As EventArgs) Handles MyBase.MouseLeave
Form2.Enabled = True
Form2.Focus()
End Sub
FORM2
Private Sub Form2_MouseEnter(sender As Object, e As EventArgs) Handles MyBase.MouseEnter
Me.Focus()
Me.Enabled = True
Form1.Enabled = False
End Sub
Private Sub Form2_MouseLeave(sender As Object, e As EventArgs) Handles MyBase.MouseLeave
Form1.Enabled = True
Form1.Focus()
End Sub
希望これはここで私のために例えば、この作業を
ありがとう!あなたのアイデアは素晴らしいです!私はちょうどそれがフォームの親と一緒に働き、子供たちを彼らにドッキングすることによっても機能することを知りました。 – melodia
に役立ちます何が起こることは、あなたが開くと、メインメニューが無効になりますです登録フォーム。
frmUserRegistration frmMainMenu = new frmUserRegistration();
frmMainMenu.ShowDialog(this);
あなただけのForm.ShowDialogコールをシミュレートしようとしているが、(ちょっと模擬ダイアログフォームのような)何かをブロックすることなく、あなたがForm.Showを(使用して試すことができます)とすぐにシミュレートされたダイアログフォームを表示している場合あなたは「擬似ダイアログフォーム」と呼ぶようにしてくださいを閉じたときに、すぐに....そして、...
private void EnableAllWindows()
{
foreach (Form f in Application.OpenForms) f.Enabled = true;
}
あなたはトンを行うことができますが
private void DisableAllWindows()
{
foreach (Form f in Application.OpenForms)
if (f.Name != this.Name)f.Enabled = false;
else f.Focus();
}
をのようなものを使用して他のすべてのウィンドウを無効にします帽子。
Form3 formshow = new Form3();
formshow.ShowDialog();
- 1. 子が開いたときに親フォームを閉じる方法
- 2. Winフォームでボタンコントロールをグレーアウト/無効にする方法はありますか?
- 3. 親フォーム子フォームが閉じているときに開きますか?
- 4. フォームの任意の場所をクリックすると、フォームをアクティブにする方法はありますか?
- 5. 親がアクティブなときにJqueryの子がアクティブになる
- 6. wm_paintを子ウィンドウに送信せずに親ウィンドウを無効にする方法はありますか?
- 7. mdi親フォームからアクティブなmdichildフォームのメソッドを呼び出すには
- 8. 親フォームのDataGridを子フォームに読み込む方法
- 9. 子フォームからクローズ親フォーム
- 10. 親フォームからリストボックスを無効にする
- 11. 無効化ボタンでフォームが無効になり、テキストが変更されます
- 12. 親子フォーム - 子フォームが最大化と縮小時に縮小する
- 13. PHPでは、ボットのフォームと無効な電子メールアカウントを減らすためのアプローチはありますか?
- 14. フォームの送信時に送信機能を無効/非表示にする方法はありますか?
- 15. あるフォームから別のフォームのtextBoxChangedイベントハンドラに変数を渡す方法はありますか?フォーム1で
- 16. MDI子フォームがWinFormsの親フォームに適合しない
- 17. MVCアプリケーションコントローラで無効なフォームを処理するうまい方法はありますか?
- 18. ボタン以外のフォームのすべてのコントロールを無効にする方法はありますか?
- 19. RadTreeViewは、親が無効になっているときに子を有効にします
- 20. Zend Formでフォーム要素を無効にする方法は?
- 21. 単一ページのフォーム認証を無効にする必要があります
- 22. どのようにエラーを失うことなく、無効なフォーム送信をフォームにリダイレクトできますか?
- 23. C#WindowsフォームにMDI子フォームが表示されているときにちらつきを避ける方法はありますか?
- 24. ループ内の親フォームと子フォームC#
- 25. Windowsフォームは、無効にするコントロールを
- 26. フォームの送信中にポップアップを無効にする方法
- 27. 「スタートアップ」フォームがVB.NETに読み込まれる前にWindowsフォームを表示する方法はありますか?
- 28. Doctrine2エンティティを「無効にする」方法はありますか?
- 29. アンドロイドマーケットを無効にする方法はありますか?
- 30. 子フォームで親フォームマッピングをオーバーライドする方法は?
MainForm.disable/.hideを使ってChildForm.showを使うことはできませんか?また、同時に2つのフォームをアクティブにして、子フォームが(メインを無効にするためにアクティブになっている) mainforMを有効にしますか? –
@DonThomasBoyle:ちょっと男、私はあなたの記述されたソリューションを正確に探しています "同時に2つのフォームをアクティブにして、子フォームが(メインを無効にするためにアクティブになって)次にオンにすると、メインフォールトを再度アクティブにします" 私にそれを解決するためのヒントを教えてください。私はthreading、application.runなどで試してみましたが、何も動作しません。これはどうやって分かりますか? – melodia