none
他のクラスからのフォーム内のオブジェクトへのアクセス方法 RRS feed

  • 質問

  • 他のクラスからのフォーム内のオブジェクトへのアクセス方法が判りません。

    test1クラスから Form1オブジェクトのインスタンスを作成して、test1クラスから、Form1上のtextBox1オブジェクトにアクセスしようとしているのですが、”Form1.textBox1' はアクセスできない保護レベルになっています。"とのエラーメッセージが現れます。オブジェクトのスコープを帰るだけでよいのでしょうか。設定操作方法などわかりましたら教えてください。

    以前にVB.NETでプログラムを書いた際には、特に設定無しに他のフォーム上のオブジェクトにアクセスできていたのですが、C#では何か設定が必要なのでしょうか。

    ------------------------------------------------------------------------------
     public class test1
        {
            protected void method1()
            {
                Form1 form1 = new Form1() ;
                string str = form1.textBox1.Text();

    }
        }
    --------------------------------------------
    Form1 クラスには textBoxクラスを一つだけ設置した。
    -------------------------------------

    2007年12月9日 8:47

回答

  •  対象フォームのデザイナ画面を開き、テキストボックスを選択した状態で、プロパティの「Modifiers」を「Public」か「Interal」に設定すれば他のクラスからアクセスすることができます。

     

     別なクラスからフォームのコントロールにアクセスする場合、パラメータだけをプロパティ経由でアクセスした方がいいという話もありますが、状況などによっても変わりますので tanaka333 さんの判断にお任せします。

     

    ※ TextBox.Text はプロパティなので () は必要ありません。

    2007年12月9日 9:20
  • オノデラ様、ご回答、有難う御座いました。
    正常に動作しました。またご指摘のプロパティ経由のアクセス方法も調べて試したところ正常に動作しました。
    いろいろと勉強になりました。重ねて御礼を申し上げます。
    2007年12月9日 11:09

すべての返信

  •  対象フォームのデザイナ画面を開き、テキストボックスを選択した状態で、プロパティの「Modifiers」を「Public」か「Interal」に設定すれば他のクラスからアクセスすることができます。

     

     別なクラスからフォームのコントロールにアクセスする場合、パラメータだけをプロパティ経由でアクセスした方がいいという話もありますが、状況などによっても変わりますので tanaka333 さんの判断にお任せします。

     

    ※ TextBox.Text はプロパティなので () は必要ありません。

    2007年12月9日 9:20
  • オノデラ様、ご回答、有難う御座いました。
    正常に動作しました。またご指摘のプロパティ経由のアクセス方法も調べて試したところ正常に動作しました。
    いろいろと勉強になりました。重ねて御礼を申し上げます。
    2007年12月9日 11:09