現在開いているフォーム(MainForm)を閉じてから、2番目のフォーム(Form)を開きます。
私はもう試した:
_private void buttonStartQuiz_Click(object sender, EventArgs e)
{
this.Close();
Form2 form2 = new Form2();
form2.ShowDialog();
}
_
または、this.Close();
の後にform2.ShowDialog()
を追加しても機能しません。
ヒントはありますか?
編集:this.Close()
の後にform2.ShowDialog()
を追加することで、新しいフォームを閉じたときにのみ閉じるようにすることもできます。代わりにform2.Show()
を選択すると、すぐに両方のフォームが閉じられます。
変化する
_this.Close();
_
に:
_this.Hide();
_
あなたはメインアプリケーションウィンドウを閉じることができず、アプリケーションを実行したいので。メインフォームを非表示にするか、メインウィンドウをまだ開いているウィンドウに変更する必要があります。
この場合、ShowDialog()
が終了した後にメインウィンドウを閉じる必要があります。次に、このボタンイベント関数this.Close()
の最後に追加する必要があります
新しいコードは次のとおりです。
_private void buttonStartQuiz_Click(object sender, EventArgs e)
{
// hide main form
this.Hide();
// show other form
Form2 form2 = new Form2();
form2.ShowDialog();
// close application
this.Close();
}
_
ApplicationContextを台無しにすることはできますが、.NETフレームワークは、WindowsFormsApplicationBaseクラスを使用してこのウィンドウモードを既に非常によくサポートしています。そのShutdownStyleプロパティを使用すると、最後のウィンドウが閉じられた後にのみプログラムをシャットダウンできます。 Program.csのコードを次のようにします。
using System;
using System.Windows.Forms;
using Microsoft.VisualBasic.ApplicationServices; // Add reference to Microsoft.VisualBasic!!
namespace WindowsFormsApplication1 {
class Program : WindowsFormsApplicationBase {
[STAThread]
static void Main(string[] args) {
var app = new Program();
app.EnableVisualStyles = true;
app.ShutdownStyle = ShutdownMode.AfterAllFormsClose;
app.MainForm = new Form1();
app.Run(args);
}
}
}
これは私にとってはうまくいきます...
private void button_Name_Click(object sender, EventArgs e)
{
form_2 Form2 = new Form2();
Form2.ShowDialog();
this.Close();
}
This.Close();を置き換えるだけです。 this.Hide();それは完璧に動作します!
閉じようとするのではなく、フォーム自体を有効または無効にします。
次のようにコーディングします。
this.enabled = false;
クリックイベントまたは任意の場所で。
それが役に立てば幸い。
_Form2 frm2 = new Form2();
frm2.ShowDialog();
_
そして
_this.Close();
_
良い組み合わせではありません。
frm2は実際にロードされますが、this.Close();
がすべてのフォームを1ミリ秒で閉じるため、あなたはそれを見ることさえできません...
_this.Hide();
_
動作します...