###前提
C#を勉強しつつアプリケーションを作っています。
###・実現したいこと
Form1にTextBoxとButtonを設置。
Read.csという新たなクラスを作りそこでバックグラウンドでテキストを読み込み、Form1のテキストボックスに表示する。
そのReadは他のフォームや他のテキストボックス(例TextBox2)でも利用したい。
Form1のButtonを押したときの処理にRead.read(textBox);のように呼び出して実行したい。
###実現に向けて
下記のソース環境で実現したいです。
C#
1//Read.cs 2class Read 3 { 4 public void read() 5 { BackgroundWorker bw = new BackgroundWorker(); 6 bw.DoWork += new DoWorkEventHandler(bw_DoWork); 7 bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(); 8 // バックグラウンド操作の実行 9 bw.RunWorkerAsync(); 10 } 11 12 private void bw_DoWork(object sender, DoWorkEventArgs e) 13 { 14 //ファイルを読み込みresultに入れる処理(省略) 15 e.Result = result;//bw_Completedで受け取らせる 16 } 17 18 private void bw_Completed(object sender, RunWorkerCompletedEventArgs e)//処理が完了した時 19 { 20 //処理が完了した時 21 textboxname.Text=e.Result;//ここで呼び出したときに指定したTextBoxに入れたい。 22 } 23 } 24 }
C#
1//Form1 2 public partial class Form1 : Form 3 { 4 private void Button_Click(object sender, EventArgs e) 5 { 6 Read Readtext = new Read(); 7 Readtext.read(TextBox);//呼び出したときにコントロールの名前を指定する。 8 } 9 }
###その他
このRead.csを他のフォームでも同じように使いまわしたいと考えています。
Form1のtextboxをpublicにしてしまえばReadから指定して変更はできると思いますがあまりpublicに頼るのはどうかと思いますし、例えばFrom2から呼び出し、そこのtextbox2に入れることはできない(=Form1に書けばいいし再利用できない)と考えました。
どのようにすればコントロール名を渡せて処理できるのでしょうか。
詳しい方からすれば簡単なのかもしれませんがまだまだ勉強中で調べてもわかりませんでした。
どうぞよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/13 18:16