• ベストアンサー

Form1のtextBoxにアクセスしたいのですが

WindowsフォームでForm1を作り、そこにtextBoxを貼り付けました。 自分で作ったKeisanクラスからtextBox.textの値を入力したいのですがどうやったら アクセスできるのでしょう。 自動生成されるInitializeComponent()をpublicに変えてみたりしたのですがダメでした。。 どなたかよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

Keisanクラス private TextBox _target; public Keisan(TextBox target) {  this._target = target; } public void Hoge() {  this._target.Text = @"テスト"; } Form1クラス private Keisan _keisan = null; private Form1_Load(object sender, EventArgs e) {  this._keisan = new Keisan(this.TextBox1); } private Button1_Click(object sender, EventArgs e) {  this._keisan.Hoge(); } やりたいのは、こんな感じのことでしょうか? 必要なタイミングで、KeisanクラスにTextBoxを認識させればいいだけのことのはずです。

tranceporter
質問者

お礼

すいません私の勘違いでした うまく動きましたありがとうございました。

tranceporter
質問者

補足

回答ありがとうございます。 HogeメソッドはKeisanクラスに書くのでしょうか、Form1クラスに書くのでしょうか 結局これだとKeisanクラスからForm1のテキストボックスにアクセスできないのですが・・・

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Access2007 textboxに入力できない。

    Access2007 textboxに入力できない。 非連結のフォーム上に、非連結のテキストボックスを張り付けたのですが、入力ができずに困っています。 カーソルは来ていて、試しにVBAで値を入れてみると表示はされるのですが、プロテクトが掛っているように、入力ができません。 テキストボックスの Enabled=true Locked=false になっています。 どのあたりを見ればよいのかもわからず、苦慮しております。 よろしくお願いいたします。

  • C++/CLIにてForm1の要素に外部から

    C++/CLIにてForm1の要素に外部の関数からアクセスしたいです。 Windows7、Visual Studio2010にてC++/CLIで 簡単なフォームアプリケーションを作成しています。 仮に新規作成し、とりあえずテキストボックスを貼りつけたとします。 この際「Form1.h」が自動的に作成され、Form1クラスの中に textBox1などの要素が自動的に作成されるかと思います。 Form1クラスのメソッドの中からそれにアクセスするには this->textBox1->Text = L"変更"; みたいにするだけで良いですが、 こうしたForm1クラスの要素に対し、 Form1.h以外の場所にある外部の自作の関数から アクセスを行うにはどのようにすれば良いのでしょうか。

  • C#でテキストボックスをクリック→フォームが開く→フォームで設定した値

    C#でテキストボックスをクリック→フォームが開く→フォームで設定した値を元のテキストボックスに入力 こんな感じのことをC#でやりたいのですがよくわからないので教えてください。 1. 親をForm1、子をForm2とします 2. Form1のTextBox1をクリックするとForm2が開いきます 3. Form2で設定した値をForm2の「入力」ボタンを押すとForm2が閉じてTextBox1に値が入力されます というものです。 ここで、textBoxは「クリックしたコントロール名を取得してForm2に渡したい」のです。 テキストボックスがたくさんあるので、textBox1とか決まった名前ではありません。 この部分がわからないのです。 ------------------------------------------------------- Form1: private void textBox1_Click(object sender, EventArgs e) {  Form2 fromItem = new Form2(sender);  DialogResult deRet = fromItem.ShowDialog(); } Form2: public Form2(object sender) {  InitializeComponent();  object pSender = sender; } private void button_input_Click(object sender, EventArgs e) {  ((System.Windows.Forms.TextBox)pSender).text = "hoge"; } ------------------------------------------------------- この程度しかわかりません。 正しい方法を教えてください。よろしくお願いいたします。

  • Access2000でTextBox変数の代入

    Access2000でTextBox変数を作成し、条件に応じて フォーム上に配置した2つのテキストボックスをその変数に代入したいのですが、うまくいきません。 Public tBox as TextBox If i = 1 Then Set tBox = テキスト1 ElseIf i = 2 Then Set tBox = テキスト2 End if ※ テキスト1、テキスト2はフォーム上に配置した テキストボックスの名称 このコードを実行すると、テキスト1は テキスト1.Textと解釈され、Textプロパティに何も設定 されていない場合、tBoxにはNULLが代入されます。 Textプロパティの値ではなく、テキストボックスオブジェクトそのものを変数に代入するにはどうすればよいのでしょうか。 ご教授お願いします。 環境は OS:Windows2000 Professional   Access2000 です。

  • FORM1からFORM2にパラメータの引渡し

    Public class Form1 Private Sub Button1_Click(------------------) Dim textBox1 As String textBox1 = TextBox1.Text End Sub End Class Form1でボタンをクリックし、textBox1の値を モードレスで開いたForm2にtextBox1の値を渡したい と考えていますが、参考となるサイトがなく どのように書いたらいいのかわかりません…。 メソッド(textBox1) 'FORM1側 Public Sub メソッド(ByVal textBox1 As String) ' FORM2側 で出来ると思ったのですが、この場合モードレスで開いたとしても パラメータが渡せない?と思い…。 ヒントでもいいので、アドバイスをよろしくお願いします。

  • FORM1の値を参照する場合について

    質問します。 FORM1を作成し、そこにTextbox1に値を何か入れた場合に、その値をチェック関数を新しいクラス(check.vb)にてチェックする場合にどのようにFORM1のTextbox1の値を参照すればよろしいのでしょうか? public function Check() AS Boolean Dim FORM AS NEW FORM1 Msgbox(FORM.Textbox1.text) end function 上記のようなチェック処理をしても空が表示されてしまいます。何方かご教授お願い致します。

  • Formの間に値を渡すことについて

    素人の質問が以下のとおりです。 【Form1の設置:】 TextBox1 Button1 【Form2の設置:】 Label1 【要求:】 1. Form1のTextBox1に値(文字)を入力して、Button1をクリックすれば 2. Form2のLabel1からTextBox1に入力された値(文字)を表示される。   要するFormの間に値を渡すことです。 もちろん、ネットでも調べましたが、説明されたことをよくわからなかったのでシンプルなコードが頂きたいです。 自分が作ったNGものもアップします。 ------------------Form1内に記載した内容------------- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim tmpMsg As String tmpMsg = TextBox1.text   Dim frmFrom1 As New Form1 frmFrom1.Show(tmpMsg) End Sub ---------------------------------------------------- ------------------Form2内に記載した内容------------- Public Class Form3 Private Sub Form2_Load(ByRef tmpMsg As String) Label1.Text = tmpmsg End Sub End Class ---------------------------------------------------- 結果として、エラーがなかったが、label1に何も表示されなかったです。 宜しくお願い致します。^@^

  • 他クラスからForm1にアクセス

    Class1からForm1のtextBox1にアクセスする件、oboroxxさんの明快な回答を 参考にしまして、何とか下記の様にコードの実装が出来ました。 初めての事ですから、コメント頂けますと、大変有難いです。 追加質問: Q1) button1_Clickの中に、『Class1 obj=new Class1();』があります。 ここで、newで作られました、objはGCの対象になりますか? いや、そうではなく、button1_Clickが終了すると、objは消滅しますか? お手数ですが、宜しくお願いします。 ============================ using System; using System.Windows.Forms; namespace TT_SendMessage { public partial class Form1:Form { public Form1() { InitializeComponent(); } public void write_textBox1(string str){ textBox1.Text=str; //<---OK Console.WriteLine("VVVVVVVVVVVVVv"); } private void button1_Click(object sender,EventArgs e) { Class1 obj=new Class1(); obj.fm1_pr=this; obj.bbb(); //write_textBox1("aaa"); //<---OK } }// public partial class Form1:Form { //================ class Class1 { private Form1 fm1=new Form1(); public Form1 fm1_pr { set { this.fm1=value;} get { return this.fm1;} }//Form1 fm1 public void bbb() { fm1.write_textBox1("bbb");//non_static } }//class Class1 { //================ } 以上、宜しくお願いします。

  • Visual C#でFormに別のクラスからアクセスするには?

    現在Visual C# 2005 Expressで簡単なアプリケーションを作成しています。Formからフォルダを指定して、別のクラス内でFormで指定されたフォルダ内のファイルに対して様々な操作をするといったものです。 そこで質問なのですが、処理するファイルが多いので進行状況をForm上のテキストボックスやステータスバーなりに表示させて意図思い、Formとは別のクラス内に、 Form frm = new Form1(); frm.TextBox1.TEXT = count + "を処理中です。"といったような記述をしても、「静的なメンバが・・・」といったエラーが出てしまいます。 入門者の自分としては、いろいろと調べてみましたが解決できずに困っています。 このような場合、どのようにするとよいのかお力をお貸しください。

  • アクセスに登録した値を条件検索によりtextboxに反映させる方法を教えてください。

    はじめまして。お世話になります。 Accessで登録した値をVBのフォーム上のテキストボックスに 反映させる方法を教えてください。 [Accessのファイル名] db1.mdb [db1.mdbのテーブル名] ListName [ListNameの各項目] 日付、名前、住所、生年月日 [VBのフォーム] lbldate、text1.textbox、text2.textbox、text3.textbox、Select.command ※lbldateの内容は日付(テキスト型)でCaptionでとってきた値が「日付」項目に登録される。 3つのtextboxには入力した値は「名前」・「住所」・「生年月日」項目に登録される。(すべてテキスト型) [自分で調べ考えたコーディングの内容] Microsoft DAO 3.6 Object Library参照設定 Private Sub Select_Click() Dim strSQL As String Dim dbs As DAO.Database Dim myset As DAO.Recordset Dim ws As DAO.Workspace Set ws = DBEngine.Workspaces(0) Set dbs = ws.OpenDatabase("C:\db1.mdb") Me.AutoRedraw = True strSQL = "SELECT * FROM Listname where 日付 = '" & lbldate & "'; " Set myset = dbs.OpenRecordset(strSQL) Text1.Text = CStr(myset("名前")) Text2.Text = CStr(myset("生年月日")) Text3.Text = CStr(myset("住所")) myset.Close End Sub 上記の内容では上手くいきません。過去にテキストボックスに入力した値を教えていただきましたが今回は逆にレコードを検索して選択する方法が上手くいきません。 アドバイスをよろしくお願い致します。 ※求める機能としてlblnameに表示される値を条件にそれに対応するレコードを選択したいのですが検索時に該当する日付がなかった場合は3つのテキストボックスに値を何も返さないプログラムにしたいと思っています。よろしくお願い致します。