Tôi muốn thêm nút đóng vào TabPages
của số TabControl
. Tôi cố gắng mã này và nó hoạt động tốt với một trái Để Quyền TabControl:Nút đóng cho TabPages of Right To Left 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);
}
}
}
Nhưng khi tôi thiết lập thuộc tính RightToLeftLayout = true
và RightToLeft = true
nó không hoạt động, TabPage
tiêu đề không xuất hiện và cũng nút đóng.
Vậy làm cách nào để sửa mã theo cách chấp nhận thuộc tính RightToLeft
?
Bằng cách vẽ trên một TabControl, nó có nghĩa là bạn cần phải xử lý 'bất động sản RightToLeft' một mình, hãy thử chỉnh sửa mã của bạn trong 'TabControl2_DrawItem' – J3soon
wher để chỉnh sửa? tôi đã thử thay đổi r.offset nhưng công việc này chỉ dành cho tabpage đầu tiên – user4340666
trong khối 'TabControl2_DrawItem', thêm điều kiện' if (RightToLeft) ' – J3soon