DOBON.NET DOBON.NETプログラミング掲示板過去ログ

[C#] TabControlのタブ表示順がデザイン時と異なる

環境/言語:[環境:Win7 SP1/言語:C#]
分類:[.NET]

VS2010のC#で、タブコントロールを使ったアプリを開発中です。
タブページ数が全部で16個あり、それぞれのタブページの用途別に
表示をしたいので、
 ・MultiLineプロパティ=True
 ・SizeModeプロパティ=Fixed
に設定し、タブページを1行に5個表示として全部で4行表示する設定を
デザイン画面で設定しましたが、デザイン画面上のタブページの表示順と
exeの表示順が異なるので、デザイン画面の表示とexeの表示をあわせる
方法はないでしょうか? というのが質問の趣旨です。

説明を簡単にするため、タブページをA1〜A5,B1〜B5,C1〜C5,D1とすると、
デザイン画面では、下からA行・B行・C行・D1の順で表示されていますが、
exeではA行・D1・C行・B行の順になってしまいます。
デザイン画面上でTabControlのプロパティを変更するとこのexeと同じ表示順に
なるので、動きを追いかけてみたところ、
 ・まず全てのタブページを削除する。
 ・A行を追加する。
 ・A行の上段にB行を追加する。
 ・A行とB行の間にC行を追加する。
 ・A行とC行の間にD1を追加する。
という動作をしており、これが影響しているものと考えられます。
これはVS2010のバグなのでしょうか。何か回避策はありませんか?

今後タブページを追加することが考えられるので、アプリの実行時に
何か細工をするのではなく、できるだけデザイン画面でできることで
解決したいと思っています。

以上よろしくお願いいたします。
自己Resですが、VS2005で同様のサンプルコードを書いてみたところ、
こちらでも同様の現象を確認できたので、VS2010のバグということでは
ないようです。
Visual Studio というよりは、.NET Framework の TabControl の実装の仕様か不具合でしょうね。
(近いもの:https://connect.microsoft.com/VisualStudio/feedback/details/720275/tabcontrol-bug-with-tabpage-ordering-easy-to-reproduce-in-vs2005-2008-and-2010

アクティブのタブをいろいろと変えていくと行の順番も変わってしまうので、「タブの順番は実行時に変わっても容認する」とするか、実装(振る舞い)から解析していい感じに配置されるように頑張って作るか、独自のタブコントロールを作るしかないかなと思っていますs。
Azuleanさん、コメントいただきありがとうございます。

一応MS側に報告はあがってるんですね。でもVS2005でも出るものが
今頃になって報告されるってのも???です。これまでTabControl使ってた
人たちはこの問題に出くわさずに済んでたんでしょうかね?

私の方では、SizeMode=Normalにしたところ、たまたまTabPageの順番が
 A1〜B5、C1〜D1
と揃ってくれたので、とりあえずこれで進めることにしました。
TabPageを追加することになったら、その時に考える ということで。

本質的な解決ではないんですが、時間もないことなので仕方ないですね。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板