У меня есть приложение, на котором можно выбрать только определенные вкладки на основе выбора пользователя. Как я могу вычеркнуть эти невыбираемые вкладки в приложении форм Windows.
Чтобы вычеркнуть их, я думаю, вам придется владеть рисованием вкладок.
Свойство 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
, если хотите. Системные цвета, которые я выбрал, могут не всегда быть лучшими, но вы получаете идею, я надеюсь.