28646

[code]

      private void button1_Click(object sender, EventArgs e)
      {
          テキストボックス入力();
      }
    
      public static void テキストボックス入力()
      {
           //textbox1に入力するには？
      }
    
[/code]

部品のオブジェクトを引数にして渡して操作するしかないのでしょうか？


CC BY-SA 3.0
2016-09-02T06:29:21.470
28645
2016-09-02T06:48:24.537
12778
question
c#
C#で自作クラスからフォームの部品を操作するには？


一般論としてコントロールを`public`メソッドに渡すような設計はあまり推奨できません。  
もっとも簡潔な回避方法としては引数に`textbox1.Text`として渡し、戻り値を`textbox1.Text`に設定することです。

[code]

    public static string テキストボックス入力(string text);
    
    private void button1_Click(object sender, EventArgs e)
    {
        textbox1.Text = テキストボックス入力(textbox1.Text);
    }
    
[/code]

またより抜本的な修正方針としては

  * [データバインド](https://msdn.microsoft.com/ja-jp/library/ef2xyb33\(v=vs.110\).aspx)を用いる
  * (適切な用途であれば)`IExtenderProvider`を実装する

などが挙げられますが、どちらもそれなりに工数がかかります。


CC BY-SA 3.0
2016-09-02T06:48:24.537
28646
2016-09-02T06:48:24.537
5750
28645
answer