C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 画面遷移


(過去ログ 137 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■80441 / inTopicNo.1)  画面遷移
  
□投稿者/ Pepper (1回)-(2016/07/18(Mon) 16:48:46)

分類:[C#] 

VS2013のC#で2つの画面を遷移したく下記のようなソースを書きました。

Form1側
namespace MasterRegistration
{
public partial class Form1 : Form
{
public Form1 frm1;
public Form2 frm2;

public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
frm1 = new Form1();
frm2 = new Form2();
}

private void btn_Click(object sender, EventArgs e)
{
frm2.Show();
frm1.Visible = false;
}

//終了
private void btnEnd_Click(object sender, EventArgs e)
{
//アプリケーションを終了する
Application.Exit();
}
}
}

Form2側
public partial class Form2 : Form
{

public Form2()
{
InitializeComponent();
}

private void Form2_Load(object sender, EventArgs e)
{

}

//戻る
private void btnReturn_Click(object sender, EventArgs e)
{
frm1.Show();      ← エラーが出る
frm2.close();  ← エラーが出る
}
}

エラーが出てきます。

やりたいことは、Form1のbtnボタンを押下すると、Form1が非表示になってForm2が表示され、
Form2のbtnReturnを押下すると、Form2がクローズされてForm1が表示される。

解る方おろしくお願いします







引用返信 編集キー/
■80442 / inTopicNo.2)  Re[1]: 画面遷移
□投稿者/ 魔界の仮面弁士 (772回)-(2016/07/18(Mon) 18:22:53)
No80441 (Pepper さん) に返信
> public partial class Form1 : Form
> {
>  public Form1 frm1;

Form1 のフィールドとして、自分自身と同じ型の変数を用意している理由が
良くわからなかったので、この点は無視して考えてみます。


> やりたいことは、Form1のbtnボタンを押下すると、Form1が非表示になってForm2が表示され、
> Form2のbtnReturnを押下すると、Form2がクローズされてForm1が表示される。

★案1:Form2 をモーダルで表示する場合★
public partial class Form1 : Form
{
  public Form1()
  {
    InitializeComponent();
  }

  private void button1_Click(object sender, EventArgs e)
  {
    Hide();
    using (var form2 = new Form2())
    {
      form2.ShowDialog(this);
    }
    Show();
  }
}

public partial class Form2 : Form
{
  public Form2()
  {
    InitializeComponent();
  }

  private void button1_Click(object sender, EventArgs e)
  {
    this.Close();
  }
}


★案2:Form2 をモードレスで表示する場合★
public partial class Form1 : Form
{
  public Form1()
  {
    InitializeComponent();
  }

  private void button1_Click(object sender, EventArgs e)
  {
    Hide();
    var form2 = new Form2();
    form2.FormClosing += (a, b) => { Show(); };
    form2.Show();
  }
}

// Form2 の実装は 案1 と同じ
引用返信 編集キー/
■80502 / inTopicNo.3)  Re[2]: 画面遷移
□投稿者/ Pepper (2回)-(2016/07/23(Sat) 21:26:18)
No80442 (魔界の仮面弁士 さん) に返信

返事が遅れて申し訳ございません。
魔界の仮面弁士さん、ありがとうございました。

無事解決しました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -