Как выделить / выделить Tabcontrol Tabpage

1

У меня есть приложение, на котором можно выбрать только определенные вкладки на основе выбора пользователя. Как я могу вычеркнуть эти невыбираемые вкладки в приложении форм Windows.

  • 0
    Вы пытались просто установить их Enabled propety (или клиент включен) в false в коде позади?
  • 0
    Это Blooper # 4 в этой книге , настоятельно рекомендуется.
Теги:
winforms

1 ответ

3
Лучший ответ

Чтобы вычеркнуть их, я думаю, вам придется владеть рисованием вкладок.

Свойство Enabled не поддерживается; вы можете видеть, что его даже не включили в Intellisense. Вы можете и должны по-прежнему устанавливать его, но он будет рисовать только Background Background, и он не будет рисовать вкладки, и не отключит никаких элементов управления или не позволит пользователю выбрать вкладку. (Не уверен, что такой хороший дизайн пользовательского интерфейса в любом случае. Вы можете установить хотя бы подсказку, чтобы объяснить, почему страница не может быть доступна. Или вы позволяете ей выбирать и отключать все элементы управления на ней рекурсивно. Или вы делай как пожелаешь ;-)

Чтобы сделать их невыбираемыми, просто поместите это в событие tabControl1_Selecting:

if (!e.TabPage.Enabled)  e.Cancel = true;

Чтобы ownerdraw Tabs установил DrawMode например OwnerDrawFixed поместите некоторый код рисования, подобный этому, в событие DrawItem:

private void tabControl1_DrawItem(object sender, DrawItemEventArgs e)
{
    TabPage tp = tabControl1.TabPages[e.Index];
   using (SolidBrush brush = 
          new SolidBrush(tp.Enabled ? tp.BackColor : SystemColors.ControlLight))
   using (SolidBrush textBrush = 
          new SolidBrush(tp.Enabled ? tp.ForeColor : SystemColors.ControlDark))
    {
       e.Graphics.FillRectangle(brush, e.Bounds);
       e.Graphics.DrawString(tp.Text, e.Font, textBrush, e.Bounds.X + 3, e.Bounds.Y + 4);
    }
}

Я решил также покрасить активные вкладки в цвет их страниц, поскольку я считаю, что это должно быть; вы можете изменить 1-й цвет кисти на tabControl1.BackColor, если хотите. Системные цвета, которые я выбрал, могут не всегда быть лучшими, но вы получаете идею, я надеюсь.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню