2011-08-30 15 views
2

私はC#winform TabControlを使用しています。私はImageListを作成し、TabControlに関連付けて、いくつかの画像を設定しました。問題は、特定のタブに対してImageIndexまたはImageKeyを設定すると、その画像はタブに表示されますが、タブにあるテキストをカバーすることです。私の混乱に加えて、特にTabPageは正しい位置(画像の後にテキスト)で画像をレンダリングします。正しい場所に画像があるページはTabPageです。最初にImageIndexプロパティを設定しました...TabControlでの画像の整列に問題があります

私はグーグルで見つけた別のフォーラムで、誰かがこの問題を説明し、問題を再現しないでください。どのような問題が起こる可能性がありますか?私は本当に何を試すのか分からない。

編集

混乱させて申し訳ありません。私はTabControlオブジェクトを持っていて、ImageListという2つの画像を持つImageListプロパティに関連付けられています。 TabControlTabPageImageIndexプロパティを設定したとき(私が読んだところから)、TabControlの実際のタブをイメージの後にテキストとしてレンダリングすることになっています。これは、の画像を最初にTabPageに設定した場合、私のTabControlにありますが、それに続くすべてのタブは、そのタブにあるテキストをカバーする画像でレンダリングされます。したがって、テキストは画像の後ろに表示されます。私は、各Tabのために画像を設定するには、forループを使用します。

for (int i = 0; i < tabControl.TabPages.Count; i++) { 
    tabControl.TabPages[i].ImageIndex = SOME_IMG_INDEX; 
} 

TabControl.TabPagesコレクションのインデックス0のTabPage(画像、テキストに続いて)正常に見えるだろう。他の人はテキストの上に画像を表示します。インデックス2でforループの繰り返しを開始する場合でも、インデックス2は正しくレンダリングされますが、それ以降のテキストはテキストの上にイメージが表示されます。私はこれが問題をより明確にするのを助けたと思う。

+0

ここに画像がありますので分かりますのでご理解ください。 –

答えて

2

TabControlSizeModeプロパティを変更したときに唯一の問題が再現されたことがわかりました。

Fixedに変更すると、画像とテキストが混じり合っていました。これを `Normal 'に戻すと、すべてが正しく再描画されます。

このanswerは、タブを削除し、この問題を回避するためのハックとしてMSDNに掲載しています。私はハックを試み、それは働いた。

更新:

Steve_Overflowが指摘したように、これは簡単な回避策正しくタブを更新することです:

tabControl1.SizeMode = TabSizeMode.Fixed; 

for (int i = 0; i < tabControl1.TabPages.Count; i++) 
    tabControl1.TabPages[i].ImageIndex = SOME_IMG_INDEX; 

tabControl1.ItemSize = tabControl1.ItemSize; 
+1

これはまさに問題の原因です。投稿していただきありがとうございます。残念ながら、私はSizeModeを修正する必要があります。私は本当にむしろその作品を使用していないだろうが、それは何よりも優れています。私は現在、 'tabControl.ItemSize = tabControl.ItemSize'を使ってイベントとその正常動作をトリガーしています。誰かがこれを解決するいくつかのハッキーの方法を知っていますか? – user12345613

+0

@Steve_Overflowハックが進むにつれ、それはかなり良いことです。 – LarsTech

+0

@@ LarsTech非常に真実。私が言ったように、そのラインは今そこにあり、誰かがより良い解決策を提供しない限り、そこにとどまるでしょう。あなたの投稿に感謝します。 – user12345613

0

あなたが固定サイズのタブを使用する場合は、使用が(一緒にコードを学位論文なぜ分かりませんが、これで問題は解決します)

tabControl.SizeMode = TabSizeMode.Normal; 
tabControl.SizeMode = TabSizeMode.Fixed; 
関連する問題