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

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

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

Re[4]: C# タブページの同一名の検出について


(過去ログ 138 を表示中)

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

■81298 / inTopicNo.1)  C# タブページの同一名の検出について
  
□投稿者/ ぽん太郎 (7回)-(2016/09/06(Tue) 18:30:05)

分類:[C#] 

複数回質問をしてしまいすみません、自分で検索したりある程度考えても分からず、質問を再度させていただきます。


メインフォームにタブコントロールを設置していて、こちらの任意でタブページを追加できるのですが、

タブ名が同じ場合はタブを追加しない、タブ名が全部異なる場合のみタブを追加みたいなことがしたいのですが、

タブ名を取得って検索しても選択してるタブ名を取得しかでてこずにどうやったら実現できるのかなってお聞きしたいです。


ご教授頂ければ幸いです。
引用返信 編集キー/
■81299 / inTopicNo.2)  Re[1]: C# タブページの同一名の検出について
□投稿者/ 魔界の仮面弁士 (887回)-(2016/09/06(Tue) 20:08:48)
No81298 (ぽん太郎 さん) に返信
> メインフォームにタブコントロールを設置していて、

Windows Forms の TabControl 上の TabPage のことですね。


> タブ名が同じ場合はタブを追加しない、

ここでいう「タブ名」というのは、
TabPage の Text プロパティの事でしょうか。それとも
TabPage の Name プロパティの事でしょうか。あるいは
それ以外のものでしょうか。


いずれにせよ、TabPages の内容を調べる事で判定できるかと思います。

 string タブ名 = textBox1.Text;
 TabPage page = tabControl1.TabPages.Cast<TabPage>.FirstOrDefault(page => page.Name == タブ名);
 if( page == null ) {
   // 未登録 → 追加
   page = new TabPage();
   page.Name = タブ名;
   page.Text = タブ名;
   tabControl1.TabPages.Add(page);
 } else {
   // 登録済
   tabControl1.SelectedTab = page;
 }
引用返信 編集キー/
■81300 / inTopicNo.3)  Re[2]: C# タブページの同一名の検出について
□投稿者/ ぽん太郎 (8回)-(2016/09/06(Tue) 21:01:29)
解答ありがとうございます。

教えていただいたソースを組み込ませていただこうとしたのですが、

Cast<TabPage>

この部分がエラーになっちゃってうまく作動しなくて。

タブコンロロールとタブ系統について最近この機能使いだしたところで無知レベルで頼ってばかりで申し訳ないです。

もっと勉強しないといけないなとおもいます。


引用返信 編集キー/
■81302 / inTopicNo.4)  Re[3]: C# タブページの同一名の検出について
□投稿者/ Azulean (704回)-(2016/09/06(Tue) 22:12:22)
No81300 (ぽん太郎 さん) に返信
> Cast<TabPage>
>
> この部分がエラーになっちゃってうまく作動しなくて。

.NET 3.5 以上がターゲットになっていますか?(VS2008 以上ですか?)
また、先頭の方の using System.Linq; を消していませんか?

バージョンの要件を満たさない場合は、Cast<T> メソッドはつかえないので、自分で foreach ループを書きましょう。
やっていることは、TabPages という集合を foreach で繰り返しつつ、TabPage にキャストして、Name プロパティを比較しているだけです。
引用返信 編集キー/
■81304 / inTopicNo.5)  Re[2]: C# タブページの同一名の検出について
□投稿者/ 朱鷺 (2回)-(2016/09/06(Tue) 22:55:24)
No81299 (魔界の仮面弁士 さん) に返信

間違っていたら申し訳ありませんが、下記の部分
>  TabPage page = tabControl1.TabPages.Cast<TabPage>.FirstOrDefault(page => page.Name == タブ名);

TabPage page = tabControl1.TabPages.Cast<TabPage>().FirstOrDefault( tp => tp.Name == タブ名);
                         ~~                 ~~    ~~
のような感じではないでしょうか?(Linqやラムダ式は不得意なので見当違いなことを書いているかもしれませんが...)。

引用返信 編集キー/
■81305 / inTopicNo.6)  Re[3]: C# タブページの同一名の検出について
□投稿者/ Azulean (705回)-(2016/09/06(Tue) 23:02:06)
No81304 (朱鷺 さん) に返信
>> TabPage page = tabControl1.TabPages.Cast<TabPage>.FirstOrDefault(page => page.Name == タブ名);
>
> TabPage page = tabControl1.TabPages.Cast<TabPage>().FirstOrDefault( tp => tp.Name == タブ名);
>                          ~~ ~~ ~~
> のような感じではないでしょうか?(Linqやラムダ式は不得意なので見当違いなことを書いているかもしれませんが...)。

確かに…。
見落として返信書いてました。orz

(前者はメソッド呼び出しを成り立たせるために () が必要、後者はローカル変数 page と被るので別の名前が必要というところ)
引用返信 編集キー/
■81308 / inTopicNo.7)  Re[4]: C# タブページの同一名の検出について
□投稿者/ ぽん太郎 (9回)-(2016/09/07(Wed) 00:15:15)
みなさん回答ありがとうございました。

無事したいことが実現できました!
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -