- PR -

[.NET2005 C#]コントロールの動的追加・削除の方法

1
投稿者投稿内容
ふにゅ
会議室デビュー日: 2007/01/10
投稿数: 10
投稿日時: 2007-03-16 10:24
いつもお世話になっております。



TabControlを作成し、TabPageを動的に追加しています。

特定のTabPageのみを削除したいのですが、どうすればよいでしょうか?
-----
for (int i = 0; i < dtcnt; i++)
{
TabPage tab = new TabPage();
Memo.Controls.Add(tab);
tab.Text = fd[i].user;
Tab.Name = "Tab" + j;
j++;
}
-----

this.Controls.Remove(??????);
を使えばいいと思ったのですが、??????に入れる名前がわかりません。。
this.Controls.Remove(Tab1);
"Tab1は現在のコンテキスト内に存在しません。"という
エラーが出て、コンパイルが通りません。

よろしくお願いします。

[ メッセージ編集済み 編集者: ふにゅ 編集日時 2007-03-16 10:27 ]
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2007-03-16 10:51
MemoがTabControlですね?
追加する時は
Memo.Controls.Add(tab);
じゃなくて、
Memo.TabPages.Add(tab);
じゃないですか。

削除する時の
Memo.TabPages.Remove(??????);
の??????はTabPageへの参照を渡します。

例えば、追加のfor文の中では
Memo.TabPages.Remove(tab);
などとすれば削除できるはずです。

インデックス(何番目のタブか)が分かっているなら
RemoveAt()というメソッドも使えます。

詳しくはここを見てください。
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.tabcontrol_members(VS.80).aspx
よねKEN
ぬし
会議室デビュー日: 2003/08/23
投稿数: 472
投稿日時: 2007-03-16 10:58
引用:

ふにゅさんの書き込み (2007-03-16 10:24) より:
this.Controls.Remove(??????);
を使えばいいと思ったのですが、??????に入れる名前がわかりません。。



Removeメソッドの引数は削除したコントロールのオブジェクト自身です。
文字列ではありません。例えば、選択されているタブを削除したい場合は、
TabControl.SelectedTab プロパティで取得したTabPageを渡してやります。

TabPageのNameプロパティの値を元に削除するのであれば、
まずはControlsプロパティのFindメソッドで該当オブジェクトを探してやり、
見つけたオブジェクトを使ってRemoveできると思います。



ふにゅ
会議室デビュー日: 2007/01/10
投稿数: 10
投稿日時: 2007-03-16 13:46
>一郎さん
RemoveAt()
おお、まさにこれがあれば実現できます!
ありがとうございます!

>よねKENさん
すいません、勘違いしていました。
ありがとうございます!


丁寧なご説明ありがとうございました
1

スキルアップ/キャリアアップ(JOB@IT)