c#で次の次のフォームへのデータの渡し方
お世話になります。
c#初心者です。
フォーム1にはbuttonが2つあり、どちらを押したかで
次(フォーム2)の次のフォーム(フォーム3)を開く時に
そのフォームにあるボタンを表示させるか・非表示にさせるか
したいと思っております。
中途半端ですが下記の様なコードを書いておりましてその先
フォーム3での記述をどの様に書いたら良いのか行き詰って
しまいました。
どなたかご親切な方、ご教示頂きたく宜しくお願い申し上げます。
記
クラス
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace WindowsFormsApplication1
{
public class Keikaku
{
public enum Mode
{
Syuuse,
Syoukai
}
}
}
----------------------------------
フォーム1
namespace WindowsFormsApplication1
{
public partial class MainMenu : Form
{
private void button1_Click(object sender, EventArgs e)
{
Form2 cForm2 = new Form2();
cForm2.Syuusei = Keikaku.Mode.Syuusei;
cForm2.ShowDialog();
}
private void button2_Click(object sender, EventArgs e)
{
Form2 cForm2 = new Form2();
cForm2.Syuusei = Keikaku.Mode.Syoukai;
cForm2.ShowDialog();
}
}
}
----------------------------------
フォーム2
namespace WindowsFormsApplication1
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private Keikaku.Mode _kakunin;
public Keikaku.Mode Syuusei
{
set
{
_kakunin = value;
}
}
private void button1_Click_1(object sender, EventArgs e)
{
Form3 cForm3 = new Form3();
cForm3.ShowDialog();
}
}
}
----------------------------------
フォーム3
namespace WindowsFormsApplication1
{
public partial class Form3 : Form
{
}
}
No.2ベストアンサー
- 回答日時:
Form1→Form2→Form3の時
極力データの引き回しを避けるならすでにForm1のボタンによって設定値の違っている_kakuninの値を利用します。(Keikaku.Modeのクラスなり型において「==」演算子が有効な場合ですが)
(1)Form3クラスに状態通知用のpublicメソッドと表示状態のプロパティを作ります。
private bool piyo = false;
public void hoge(bool btn_sts)
{
// Form1のボタン状態によってForm3の状態を決定する
// (引数は適当)
this.piyo = btn_sts;
}
(2)Form2でのForm3の生成直後に(1)のメソッドを呼びます。
private void button1_Click_1(object sender, EventArgs e)
{
Form3 cForm3 = new Form3();
cForm3.hoge(this._kakunin == Keikaku.Mode.Syoukai); // 例
cForm3.ShowDialog();
}
(3)Form3のロード時にコントロールの表示非表示を行ないます。
private void Form3_Load(...)
{
// (1)で取得した状態にしたがってボタンの表示/非表示の処理
this.buttonA.visible = this.piyo; // 例
}
何らかの理由で_kakuninの値が使えないときはForm1→Form2において、Form2→Form3と同様なメソッドの呼出でボタンの状態を渡すようにします。
また、上記ではForm1のbutton1ならfalse, button2ならtrueのbool値で状態を判別していますが、Form1のボタンの数が3個以上とかならint型の整数で扱う形にする必要があります。
No.1
- 回答日時:
(1)Form3クラスに状態通知用のpublicメソッドと表示状態のプロパティを作ります。
private bool piyo = false;
public void hoge(bool btn1, bool btn2)
{
// Form1のボタン状態によってForm3の状態を決定する
// (引数は適当)
if (btn1) piyo = true; // 例
if (btn2) piyo = false; // 例
}
(2)Form1でのForm3の生成直後に(1)のメソッドを呼びます。
private void button1_Click_1(object sender, EventArgs e)
{
Form3 cForm3 = new Form3();
cForm3.hoge(true, false); // ShowDialogより前
cForm3.ShowDialog();
}
(3)Form3のロード時にコントロールの表示非表示を行ないます。
private void Form3_Load(...)
{
// (1)で決定した状態にしたがってボタンの表示/非表示の処理
this.buttonA.visible = piyo; // 例
}
早々にご回答頂きありがとうございます。
しかし、フォーム1から直でフォーム3を開くのではなくて、フォーム2を経由
してから開きたいのです。ですので、フォーム1のtrueかfalseの情報をフォーム2
でも保持して置き、フォーム2からフォーム3を開いた時にその保持していた
trueかfalseの情報を活用したいのです。
分かりにくい説明で申し訳ございませんが、この場合のやり方はいかがでしょうか。
何卒、宜しくお願い申し上げます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# Windows Formアプリからコンソールを呼び出して文字を出力させたい 8 2023/05/09 10:53
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- C言語・C++・C# PC画面を録画するプログラムでdllの読み込みエラー 1 2023/04/22 08:31
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#で、ある条件でFormが自動で...
-
OutLookのメール受信通知 (C#)
-
【C#】別フォームも同時に閉じ...
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
-
グラフの交点の求め方(Excel)
-
フォントの大きさ
-
VBAのフォント変更(エクセルか...
-
コンボボックス内の文字サイズ変更
-
エクセルで回転する座標の出し方
-
他のアプリケーションの終了処理
-
メッセージハンドラ
-
閉図形の座標の配列が右回りか...
-
エクセルである点からの距離で...
-
VB.NET2005 TextBox 高さ(Heig...
-
VBA .Value=.Value ?
-
リソースエディタでスタティッ...
-
コントロールの書式設定で、“コ...
-
ラジオボタンの初期指定
-
MFCでOnPaintのタイミング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【C#】別フォームも同時に閉じ...
-
C#で、ある条件でFormが自動で...
-
C# 自分自身のコントロールを指...
-
別フォームからdatagridviewの削除
-
C#でテキストボックスをクリッ...
-
C# フォームを閉じてもプログラ...
-
C# FlowLayoutPanelのコントロ...
-
OutLookのメール受信通知 (C#)
-
【C#】サブフォームからメイン...
-
ASP.NetでJavaScriptからポスト...
-
VC++フォームアプリケーション ...
-
c#で次の次のフォームへのデー...
-
C#で初歩で引っかかってしまい...
-
form2 から form1に戻ったとき...
-
エクセルで作った新しいウイン...
-
グラフの交点の求め方(Excel)
-
「アイテムは収集されました」...
-
フォントの大きさ
-
コンボボックス内の文字サイズ変更
-
コントロールの書式設定で、“コ...
おすすめ情報