Здравствуйте, в самом конструкторе Visual Studio, в открытом окне когда наводишь курсор на вкладку (X) закрыть, данный крестик выделяется, крестик получился,а вот выделение крестика никак не получается. Спасибо. namespace WindowsFormsApplication31 { public partial class Form1 : Form { public Form1() { InitializeComponent(); tabPage1.Parent = null; tabPage2.Parent = null; tabPage3.Parent = null; tabPage4.Parent = null; tabPage5.Parent = null; tabPage6.Parent = null; tabControlTablica.DrawMode = TabDrawMode.OwnerDrawFixed;
tabControlTablica.SizeMode = TabSizeMode.Fixed;// Чтобы изменить вкладку SizeMode должно быть исправлено
Size tab_size = tabControlTablica.ItemSize; // Размер вкладок
tab_size.Width = 118; //ширина вкладки
tab_size.Height += 40; //высота вкладки
tabControlTablica.ItemSize = tab_size;
//Событие для вставки contextMenuStrip в tabControl
// this.tabControlTablica.MouseClick += new MouseEventHandler(tabControlTablica_MouseClick);
}
private int Xwid = 6;//координаты ширины по диагонали крестика
private const int tab_margin = 3;//координаты по высоте крестика
private void tabControlTablica_DrawItem(object sender, DrawItemEventArgs e)
{
Brush text_brush, //Текст во вкладке
box_brush; //Рамка вокруг крестика
Pen box_pen;
// Рисуем в tabControlTablica (tabPage) рамку
// Потом будем использовать в событии MouseDown.
Rectangle tab_rect = tabControlTablica.GetTabRect(e.Index);
// Рисуем фон
// Подбираем соответствующие кисти и перья
//Вкладка открыта фон изменён
if (e.State == DrawItemState.Selected)
{
e.Graphics.FillRectangle(Brushes.White, tab_rect);
e.DrawFocusRectangle();
text_brush = Brushes.Black;
box_brush = Brushes.Black;
box_pen = Pens.Red; //Цвет крестика при включенной кнопке tabPage
}
else
{
e.Graphics.FillRectangle(Brushes.LightGray, tab_rect);
text_brush = Brushes.Gray;
box_brush = Brushes.Black;
box_pen = Pens.Gray; //Цвет крестика при выключенной кнопке tabPage
}
// Allow room for margins.
Rectangle layout_rect = new Rectangle(
tab_rect.Left + tab_margin,
tab_rect.Y + 2 + tab_margin, //Координаты смещения крестика
tab_rect.Width - 1 * 5 - tab_margin, //Координаты смещения крестика
tab_rect.Height - 2 * tab_margin);
using (StringFormat string_format = new StringFormat())
{
// Цифры рисуем во вкладке в нижнем правом углу
using (Font small_font = new Font(this.Font.FontFamily, 6, FontStyle.Regular))
{
string_format.Alignment = StringAlignment.Far;
string_format.LineAlignment = StringAlignment.Far;
e.Graphics.DrawString(
e.Index.ToString(),
small_font,
text_brush,
layout_rect,
string_format);
}
// Рисуем текст во вкладка tabControlTablica
Font font;
Brush br = Brushes.Black;
StringFormat strF = new StringFormat(StringFormat.GenericDefault);
if (tabControlTablica.SelectedTab == tabControlTablica.TabPages[e.Index])
{
//Формат текста во вкладках tabControl
//e.Graphics.DrawImage(closeImageAct, imageRec);
string_format.Alignment = StringAlignment.Near;
string_format.LineAlignment = StringAlignment.Near;
font = new Font("Microsoft Sans Serif", 8, FontStyle.Bold);
e.Graphics.DrawString(tabControlTablica.TabPages[e.Index].Text,
font, text_brush,
layout_rect,
string_format);
}
else
{
//Формат текста во вкладках tabControl
string_format.Alignment = StringAlignment.Near;
string_format.LineAlignment = StringAlignment.Near;
font = new Font("Microsoft Sans Serif", 8, FontStyle.Regular);
e.Graphics.DrawString(tabControlTablica.TabPages[e.Index].Text,
font,
text_brush,
layout_rect,
string_format);
}
// //Рисуем рамку вокруг крестика
//Rectangle rect = tabControlTablica.GetTabRect(e.Index);
//e.Graphics.FillRectangle(box_brush,
// layout_rect.Right - Xwid,
// layout_rect.Top,
// Xwid,
// Xwid);
//e.Graphics.DrawRectangle(box_pen,
// layout_rect.Right - Xwid,
// layout_rect.Top,
// Xwid,
// Xwid);
//Рисуем крестик
e.Graphics.DrawLine(box_pen,
layout_rect.Right - Xwid,
layout_rect.Top,
layout_rect.Right,
layout_rect.Top + Xwid);
e.Graphics.DrawLine(box_pen,
layout_rect.Right - Xwid,
layout_rect.Top + Xwid,
layout_rect.Right,
layout_rect.Top);
}
}
private void tabControlTablica_MouseDown(object sender, MouseEventArgs e)
{
// При нажатии закрыть вкладку
for (int i = 0; i < tabControlTablica.TabPages.Count; i++)
{
Rectangle tab_rect = tabControlTablica.GetTabRect(i);
RectangleF rect = new RectangleF(
tab_rect.Left - 2 + tab_margin,
tab_rect.Y + 2 + tab_margin,
tab_rect.Width - 2 * tab_margin,
tab_rect.Height - 2 * tab_margin);
if (e.X >= rect.Right - Xwid &&
e.X <= rect.Right &&
e.Y >= rect.Top - 1 &&
e.Y <= rect.Top + Xwid)
{
tabControlTablica.TabPages.Remove(tabControlTablica.TabPages[i]);
tabControlTablica.SelectedIndex = tabControlTablica.TabPages.Count - 1;
}
}
}
private void button1_Click(object sender, EventArgs e)
{
if (tabControlTablica.TabPages.IndexOf(tabPage1) < 0)
{
tabControlTablica.Controls.Add(tabPage1);
}
if (button1.Enabled == true)
{
button1.Enabled = false;
}
}
private void button2_Click(object sender, EventArgs e)
{
if (tabControlTablica.TabPages.IndexOf(tabPage2) < 0)
{
tabControlTablica.Controls.Add(tabPage2);
}
if (button2.Enabled == true)
{
button2.Enabled = false;
}
}
private void button3_Click(object sender, EventArgs e)
{
if (tabControlTablica.TabPages.IndexOf(tabPage3) < 0)
{
tabControlTablica.Controls.Add(tabPage3);
}
if (button3.Enabled == true)
{
button3.Enabled = false;
}
}
private void button4_Click(object sender, EventArgs e)
{
if (tabControlTablica.TabPages.IndexOf(tabPage4) < 0)
{
tabControlTablica.Controls.Add(tabPage4);
}
if (button4.Enabled == true)
{
button4.Enabled = false;
}
}
private void button5_Click(object sender, EventArgs e)
{
if (tabControlTablica.TabPages.IndexOf(tabPage5) < 0)
{
tabControlTablica.Controls.Add(tabPage5);
}
if (button5.Enabled == true)
{
button5.Enabled = false;
}
}
private void button6_Click(object sender, EventArgs e)
{
if (tabControlTablica.TabPages.IndexOf(tabPage6) < 0)
{
tabControlTablica.Controls.Add(tabPage6);
}
if (button6.Enabled == true)
{
button6.Enabled = false;
}
}
private void tabPage1_ParentChanged(object sender, EventArgs e)
{
if (button1.Enabled == false)
{
button1.Enabled = true;
}
}
private void tabPage2_ParentChanged(object sender, EventArgs e)
{
if (button2.Enabled == false)
{
button2.Enabled = true;
}
}
private void tabPage3_ParentChanged(object sender, EventArgs e)
{
if (button3.Enabled == false)
{
button3.Enabled = true;
}
}
private void tabPage4_ParentChanged(object sender, EventArgs e)
{
if (button4.Enabled == false)
{
button4.Enabled = true;
}
}
private void tabPage5_ParentChanged(object sender, EventArgs e)
{
if (button5.Enabled == false)
{
button5.Enabled = true;
}
}
private void tabPage6_ParentChanged(object sender, EventArgs e)
{
if (button6.Enabled == false)
{
button6.Enabled = true;
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Вообщем есть такая проблема, те
Доброго времени сутокЕсть WPF-приложение + дампер(MiniDumpWriteDump)
Использую данный код: http://wwwcleoag