C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ユーザーコントロールにアクセスしたい

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■90358 / inTopicNo.1)  ユーザーコントロールにアクセスしたい
  
□投稿者/ 山ライオン (4回)-(2019/03/04(Mon) 11:19:26)

分類:[.NET 全般] 

下記のサイトを参考にユーザーコントロールを作成して、コントロールをフォームに貼り付けました。

https://www.ipentec.com/document/csharp-create-user-control

Formの中にカンタムコントロール(テキストボックスが3つ、ボタンが3つ)のテキストボックスにアクセスしたいのですが、
どのようにすればアクセスできるのでしょうか?

Formのロードイベントで

private void UserControl1_Load(object sender, EventArgs e)
{
UserControl1.TextBox1.Text = "こんにちは";
}

のようにしたいのですが、インテリセンスが働かず動いてくれません。
また、Formにドロップしたカスタムコントロールの中のコントロール(テキストボックス、ボタンなど)の
大きさを変更したりするのは可能でしょうか(Form上で)?

VS2015使用。
引用返信 編集キー/
■90359 / inTopicNo.2)  Re[1]: ユーザーコントロールにアクセスしたい
□投稿者/ WebSurfer (1782回)-(2019/03/04(Mon) 11:43:09)
No90358 (山ライオン さん) に返信

> Formの中にカンタムコントロール(テキストボックスが3つ、ボタンが3つ)のテキストボックス
> にアクセスしたいのですが、どのようにすればアクセスできるのでしょうか?

そのカスタムコントロールの .Designer.cs を開いてコードを見てください。
C# なので配置した TextBox や Button のアクセス修飾子が private になっているはずです。

それを public などに書き換えるのはもちろん NG なので、それらにアクセスできるように
パブリックプロパティを追加します。

.cs ファイルを開いて、例えば textBox1 にするなら以下のようにします。(textBox2 など
も同様)

namespace WindowsFormsApplication1
{
    public partial class UserControl1 : UserControl
    {
        public UserControl1()
        {
            InitializeComponent();
        }

        public TextBox TextBox1
        {
            get { return this.textBox1; }
        }
    }
}


そうすれば、ユーザーコントロールを配置した Form では以下のように textBox1 にアクセス
できます。

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            this.userControl11.TextBox1.Text = "テキスト";
        }
    }
}

引用返信 編集キー/
■90360 / inTopicNo.3)  Re[1]: ユーザーコントロールにアクセスしたい
□投稿者/ PANG2 (263回)-(2019/03/04(Mon) 11:51:00)
テキストボックスのModifiersプロパティ
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ