前提・実現したいこと・発生している問題
前提
c#でwin Formアプリを作っており、
その際にサブのフォームで取得した情報を、メインのフォームで処理(テキストの表示や、datatableに追加など)をしたいと考えました。しかし、サブで起きるイベントとメインの関数で紐付けができません。
実現したいこと・発生している問題
その問題の部分の簡単なプログラム(サブフォームのtextbox1に入力された文字列をsubForm.button1が押されたら、メインフォームのlabel1に表示させるもの)を作ろうと試行錯誤したのですが、うまくいきませんでした。
したいことは、subFormのbutton1のclickイベントにForm1(メインのフォーム)の関数subButtonを紐付けることです。よろしくおねがいします。
該当のソースコード
C#
1//mainフォーム 2namespace formTest 3{ 4 public partial class Form1 : Form 5 { 6 subForm subForm = new subForm(); 7 8 public Form1() 9 { 10 InitializeComponent(); 11 } 12 13 private void button1_Click(object sender, EventArgs e) 14 { 15 subForm.Show(); 16 subForm.Visible = true; 17 } 18 19 private void Form1_Load(object sender, EventArgs e) 20 { 21 this.label1.Text = subForm.text; 22 } 23/* 24 private void subIn(object sender, EventArgs e) 25 { 26 subForm.button1.Click += subButton(); 27 } 28 29 public void subButton(object sender,EventArgs e) 30 { 31 this.label1.Text = subForm.textBox1.Text; 32 subForm.textBox1.Text = ""; 33 subForm.Close(); 34 } 35*/ 36 } 37} 38 39//subフォーム 40namespace formTest 41{ 42 public partial class subForm : Form 43 { 44 public string text; 45 // Form1 Form1 = new Form1(); 46 public subForm() 47 { 48 InitializeComponent(); 49 } 50 51 private void subForm_FormClosing(object sender, FormClosingEventArgs e) 52 { 53 e.Cancel = true; 54 this.Visible = false; 55 56 } 57 58 private void button1_Click(object sender, EventArgs e) 59 { 60 text = textBox1.Text; 61 // Form1.label1.Text = text; 62 textBox1.Text = ""; 63 this.Close(); 64 } 65 } 66} 67
試したこと
デザインからsubFormのsubButtonのプロパティのうちのModifiersをpublicにしました。
そのうえでsubFormのbutton1のclickイベントを確認しましたがsubButton()を参照させることができませんでした。
他にも独自のイベントを作るなど、何個かやろうとしましたがわかりませんでした。
補足情報(FW/ツールのバージョンなど)
Windows 10 Home 20H2
VisualStudioVersion = 16.0.31624.102
C#
.NET framework 4.7.2
質問の書き方が悪くすいません。
逆にわかりにくくなってしまったと思います。
加えてgentaroさん、本当に申し訳ないです。自分がよく分かっておらずすべての回答を試して、唯一fanaさんの方法で確かにできて前回の質問文でできたと書いたのですが、
質問文の書き方が悪くその関数以外から変数を持ってくることができなかったため(自分の使いたい用途で使用できなかったため)再度、前回質問で追記させてもらいました。質問文の書き方が悪かったと反省しています。
そのうえで、質問への修正で解決している上で回答をもらうなら、質問を立て直したほうがいいのではとの声を頂いたので、そのようにさせていただきました。
前回、回答していただいた方には本当に申し訳なく思っています。配慮だとかそういうものに気が回っていませんでした。
前回の質問のリンクです.https://teratail.com/questions/360900
回答2件
あなたの回答
tips
プレビュー