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

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

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

Re[2]: 値渡し的な使い方をするには?


(過去ログ 135 を表示中)

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

■79669 / inTopicNo.1)  値渡し的な使い方をするには?
  
□投稿者/ C#初心者 (5回)-(2016/04/27(Wed) 17:14:53)

分類:[C#] 

いつもお世話になっております。
現在、VisualC#2010Expressにて
開発を行っております。

画面にはタブページが2つあり、
それぞれに、テキストボックス等の
色々なコントロールがあります。

下記コードで、
全テキストのコントロールを取得したのち
Control型のコントロール保存関数へ値を渡したいので
一度、Controlでキャストするために
foreach文を使って、コントロールを追加していますが、
なぜか、一番最初のタブページの画面上からテキストボックスが消えてしまいます。

テキストボックスを消えないように、
上手く、コントロール保存関数へ値を渡すにはどうしたらよいのでしょうか?

分かる方がいましたら、アドバイスをお願いします。

      //アクティブなフォームを取得
Form frm = Form.ActiveForm;

//全テキスト取得
//i:タブページ番号
for (int i = 0; i <= this.tabControl1.TabPages.Count - 1; i++)
{
//全テキストを取得
IList<TextBox> alltext = GetAllSubTextBox(this.tabControl1.TabPages[i]);
//Control ctrl1 = new Control();
Control ctrl1 = new Control();

foreach (TextBox txt2 in alltext)
{
ctrl1.Controls.Add(txt2);
}

コントロール保存(ref frm, ctrl1, i, ref csv);
}
       private void コントロール保存(ref Form frm, Control ctrls, int tabpageno, ref string csv)
     {
      }
引用返信 編集キー/
■79670 / inTopicNo.2)  Re[1]: 値渡し的な使い方をするには?
□投稿者/ Hongliang (429回)-(2016/04/27(Wed) 17:31:12)
よく分かりませんが、
> private void コントロール保存(ref Form frm, Control ctrls, int tabpageno, ref string csv)
このメソッドにおいて、ctrlsは単にコントロールのフラットなコレクションを提供するためだけに使われていませんか?
であるならば、Control ctrlsではなくIList<Control> ctrlsなどにして、alltextを直接渡してしまえば良いのでは。

Controlは、一つの親のみを持ちます。
あるControlオブジェクトが他のコンテナコントロールのControlsにAddされた場合、そのControlオブジェクトは元のコンテナコントロールから削除されます。
引用返信 編集キー/
■79672 / inTopicNo.3)  Re[2]: 値渡し的な使い方をするには?
□投稿者/ C#初心者 (6回)-(2016/04/27(Wed) 21:24:39)
No79670 (Hongliang さん) に返信
> よく分かりませんが、
>>private void コントロール保存(ref Form frm, Control ctrls, int tabpageno, ref string csv)
> このメソッドにおいて、ctrlsは単にコントロールのフラットなコレクションを提供するためだけに使われていませんか?
> であるならば、Control ctrlsではなくIList<Control> ctrlsなどにして、alltextを直接渡してしまえば良いのでは。
>
> Controlは、一つの親のみを持ちます。
> あるControlオブジェクトが他のコンテナコントロールのControlsにAddされた場合、そのControlオブジェクトは元のコンテナコントロールから削除されます。

IList<Control> ctrlsなどにして、alltextを直接渡したら、思い通りの動作になりました。
また、Controlオブジェクトに関しても大変勉強になりました。

Hongliang さん
詳しい説明ありがとうございました。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -