Проблема с выравниванием изображения на TabControl - PullRequest
2 голосов
/ 30 августа 2011

Я использую c # winform TabControl. Я создал ImageList, связал его с TabControl и заполнил его несколькими изображениями. Проблема в том, что когда я устанавливаю ImageIndex или ImageKey для конкретной вкладки, изображение появляется на вкладке, но оно покрывает текст, который находится на вкладке. Чтобы добавить к моей путанице, один TabPage, в частности, отображает изображение в правильном месте (изображение сопровождается текстом). Страница с изображением в правильном месте - это то, что TabPage Я установил свойство ImageIndex для первого ...

Я погуглил и нашел сообщение на другом форуме, где кто-то описал эту проблему, и все сказали, что не могут воссоздать проблему. Есть идеи, в чем может быть проблема? Я действительно не знаю, что попробовать.

Редактировать

Извините за путаницу. У меня есть TabControl объект со свойством ImageList, связанным с ImageList, который имеет два изображения. Когда я устанавливаю свойство ImageIndex для TabPage в TabControl (из того, что я прочитал), предполагается, что фактическая вкладка TabControl отображается как изображение, за которым следует текст. Это то, что происходит, когда я устанавливаю изображение для first TabPage в моем TabControl, но каждая последующая вкладка будет отображаться с изображением, охватывающим текст, который находится на вкладке. Таким образом, текст появляется за изображением. Я использую цикл для установки изображения для каждого Tab:

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

TabPage в индексе 0 коллекции TabControl.TabPages будет выглядеть нормально (изображение сопровождается текстом). У других будет изображение поверх текста. Даже если бы я должен был начать итерацию цикла for с индекса 2, индекс 2 будет отображаться правильно, но после этого будет изображение поверх текста. Надеюсь, это помогло прояснить вопрос.

Ответы [ 2 ]

2 голосов
/ 01 сентября 2011

Единственный способ воссоздать вашу проблему - это изменение свойства SizeMode на TabControl.

.

Когда я изменил его на Fixed, изображения и текст смешались. При возврате в «Нормальный» все снова отображается правильно.

В этом ответе говорится об удалении вкладок и добавлении их обратно в качестве хака, который работает вокруг этой проблемы, размещенной на 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;
0 голосов
/ 16 сентября 2013

Если вы хотите вкладки фиксированного размера, используйте эти коды вместе (не знаю почему, но это решит проблему)

tabControl.SizeMode = TabSizeMode.Normal;
tabControl.SizeMode = TabSizeMode.Fixed;
...