Desidero aggiungere un pulsante di chiusura a TabPages
di un TabControl
. Provo questo codice e funziona benissimo con una sinistra a destra TabControl:Pulsante di chiusura per TabPages di TabControl da destra a sinistra C#
private Point _imageLocation = new Point(13, 5);
private Point _imgHitArea = new Point(13, 2);
this.tabControl2.DrawMode = System.Windows.Forms.TabDrawMode.OwnerDrawFixed;
tabControl2.DrawItem += TabControl2_DrawItem;
private void TabControl2_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e)
{
try
{
Image img = new Bitmap(GestionP.Properties.Resources.Close);
Rectangle r = e.Bounds;
r = this.tabControl2.GetTabRect(e.Index);
r.Offset(2, 2);
Brush TitleBrush = new SolidBrush(Color.Black);
Font f = this.Font;
string title = this.tabControl2.TabPages[e.Index].Text;
e.Graphics.DrawString(title, f, TitleBrush, new PointF(r.X, r.Y));
if (tabControl2.SelectedIndex >= 1)
{
e.Graphics.DrawImage(img, new Point(r.X + (this.tabControl2.GetTabRect(e.Index).Width - _imageLocation.X), _imageLocation.Y));
}
}
catch (Exception) { }
}
private void tabControl2_MouseClick(object sender, MouseEventArgs e)
{
TabControl tc = (TabControl)sender;
Point p = e.Location;
int _tabWidth = 0;
_tabWidth = this.tabControl2.GetTabRect(tc.SelectedIndex).Width - (_imgHitArea.X);
Rectangle r = this.tabControl2.GetTabRect(tc.SelectedIndex);
r.Offset(_tabWidth, _imgHitArea.Y);
r.Width = 16;
r.Height = 16;
if (tabControl2.SelectedIndex >= 1)
{
if (r.Contains(p))
{
TabPage TabP = (TabPage)tc.TabPages[tc.SelectedIndex];
tc.TabPages.Remove(TabP);
}
}
}
Ma quando ho impostato la proprietà RightToLeftLayout = true
e RightToLeft = true
non funziona, TabPage
titoli non appaiono e anche il pulsante di chiusura.
Quindi, come risolvere il codice in modo che accetti la proprietà RightToLeft
?
da disegno su una TabControl, che significa che è necessario elaborare 'proprietà RightToLeft' da soli, provare a modificare il codice in' TabControl2_DrawItem' – J3soon
Wher modificare? ho provato a cambiare r.offset ma questo funziona solo per la prima tabpage – user4340666
nel blocco 'TabControl2_DrawItem', aggiungere una condizione' if (RightToLeft) ' – J3soon