Ich möchte eine Schließen-Schaltfläche TabPages
eines TabControl
hinzufügen. Ich versuche, diesen Code und es funktioniert mit einem links nach rechts TabControl fein:Schließen Sie die Schaltfläche für TabPages von rechts nach links TabControl 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);
}
}
}
Aber wenn ich die Eigenschaft RightToLeftLayout = true
und RightToLeft = true
es nicht funktionieren, TabPage
Titel nicht angezeigt werden und auch in der Nähe Taste.
Also, wie den Code in einer Weise zu beheben, die RightToLeft
Eigenschaft akzeptiert?
auf einem TabControl Durch das Zeichnen, bedeutet dies, Sie 'RightToLeft' Eigenschaft selbst verarbeiten müssen, versuchen Sie den Code der Bearbeitung in' TabControl2_DrawItem' – J3soon
Wher zu bearbeiten? Ich habe versucht, r.offset zu ändern, aber dies funktioniert nur für die erste Registerkarte – user4340666
in der 'TabControl2_DrawItem' Block, fügen Sie eine' if (RightToLeft) 'Bedingung – J3soon