A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
>private void btn_Click(object sender, EventArgs e)
>{
> Form frm = new WindowsFormsApplication1.frmDataTeble();
> frm.Show(this);
>}
で、作成したfrmは、btn_Click()を抜ける際に寿命が尽きます。
# 正確には「ガベージコレクション」で回収されるまで…かなぁ。
# Showメソッドで表示している(使用中)なので、表示が消えるまでは持つか。
# ただし、btn_Click()から抜けると参照する方法がない。
では…
>private void checkBox_Click(object sender, System.EventArgs e)
>{
> if (check.Checked)
> {
> dataform.Activate();
> dataform.DataSetting(test.txt);
> }
>}
ここのdataformはいったい何者でしょう??
btn_Click()で作成したフォームとは別のモノ(別のインスタンス)ではありませんか?
btn_Click()のイベントハンドラで、人間という型から田中さんを作成(frm)し立ち上がって貰い(Showメソッドで表示)ました。
どこか別の場所で、同じく人間という型から斉藤さんを作成(dataform)しています。
ただし、斉藤さんにはまだ寝たままの状態(Showメソッドは未実行)でいて貰います。
checkBox_Click()のイベントハンドラで斉藤さんに目覚めて(Activateメソッド実行)もらい、メモ用紙を渡し(DataSettingメソッド実行)ました。
# ただし斉藤さんは相変わらず寝転がったまま(Showメソッド未実行なまま)です。
メモ用紙をちゃんと渡したはずなのに、なぜ田中さんが持っているメモ用紙の内容が更新されないんでしょうか??
ということです。
インスタンスが別なのですから、表示されているフォーム(上の例なら田中さん)の内容は更新されません。
dataformを親フォームのコンストラクタで作成していて、親フォームのフィールドとしているのであれば、btn_Click()のイベントハンドラで「新しく作る」のが間違っています。
Wr5さん
丁寧なご回答ありがとうございます。
実は同じアプリケーションで、namespaceは2つになってしまい、新規作成した子フォームと親フォームはそれぞれのnamespaceとなり、アクセスするために、dataformを定義しました。
親フォームから操作する(btn_Click()のイベントハンドラ)と、チェックしたデータを子フォームに表示するような作成したかったのです。
やはり他の方法も考えないといけないと思います。
どうもありがとうございます。
No.1
- 回答日時:
どういうコードなのか、不明では指摘のしようもない。
とは思いませんか?
>親フォームからチェックした項目(データ)を子フォームの関数に渡しているのですが、子フォームのdatagridviewの更新がしなくて、データも反映されていない状況です。
子フォームはどうやって生成しています?
# あと、そのインスタンスの寿命は?
この回答への補足
ご回答ありがとうございます。
コードが長くなりますが、
(1)子フォーム作成は
private void btn_Click(object sender, EventArgs e)
{
Form frm = new WindowsFormsApplication1.frmDataTeble();
frm.Show(this);
}
子フォームの関数
public void DataSetting(string data)
{
this.dataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically;
int com = this.dataGridView1.CurrentCell.ColumnIndex;
int row = this.dataGridView1.CurrentCell.RowIndex;
(this.dataGridView1.Rows[c.RowIndex].IsNewRow)
this.dataGridView1.InitializeLifetimeService();
if (this.dataGridView1.Rows[row].IsNewRow)
{
this.dataGridView1.BeginEdit(true);
this.dataGridView1.EditingControl.Text = "1";
this.dataGridView1.EndEdit();
this.dataGridView1[com, row].Value = data;
}
if (data != null) this.dataGridView1[com, row].Value = data;
this.dataGridView1.CurrentCell = this.dataGridView1[com, row + 1];
this.dataGridView1.Rows[row + 1].HeaderCell.Value = "No " + (this.dataGridView1.RowCount + 1);
this.dataGridView1.Invalidate();
}
親フォームから子フォームの対して、関数でアクセスします
private void checkBox_Click(object sender, System.EventArgs e)
{
if (check.Checked)
{
dataform.Activate();
dataform.DataSetting(test.txt);
}
}
この一連の動作では、エラーなく動きましたが、子フォームのデータが表示しないし、更新もしないので、
インスタンスの寿命に関して、もっと詳しく教えていただけませんか。
どうぞよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
ExcelVBAのユーザーフォームの...
-
Excelのユーザーフォームのテキ...
-
エクセルVBAのフォームを最...
-
VBA(エクセル)のユーザー...
-
指定の動作中ユーザーフォーム...
-
フォームのテキストボックスな...
-
MSGBOXのフォント大きさ変更
-
アニメGifが止まってしまう?
-
ユーザーフォームのテキストボ...
-
Access VBA コントロールの参照...
-
コントロールの存在確認
-
エクセルのVBAでユーザーフォー...
-
ブックをCloseまたはQuitで閉じ...
-
ユーザーフォーム上に現在日時...
-
なぜエラーになるのでしょう?...
-
ユーザーフォームのラベルに時...
-
モーダルフォームとモードレス...
-
フォームに引数を渡す方法のやり方
-
クリックイベントなのに、2回ク...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
ExcelVBAのユーザーフォームの...
-
ユーザーフォームのテキストボ...
-
エクセルVBAのフォームを最...
-
クリックイベントなのに、2回ク...
-
VBAでユーザーフォームを再表示...
-
Form_Load と Form_Activate の...
-
Microsoft Formsの「個人情報や...
-
ACCESSのフォーム、開くんです...
-
'ユーザーフォーム右上隅の[×...
-
フォームウィンドウを最前面に...
-
Hideについて(.NET)
-
モーダルフォームとモードレス...
-
ユーザーフォーム上に現在日時...
-
MSGBOXのフォント大きさ変更
-
Excelにて、ユーザーフォームで...
-
コントロールの存在確認
-
ユーザーフォームのラベルに時...
-
VBA(エクセル)のユーザー...
-
エクセルVBA フォーム上でOnkey...
おすすめ情報