मैं TabControl
के TabPages
पर एक करीबी बटन जोड़ना चाहता हूं। मैं इस कोड की कोशिश है और यह एक दाएं से बाएं TabControl के साथ ठीक काम करता है:दाएं से बाएं टैबकंट्रोल के टैबपेज के लिए बंद बटन सी #
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);
}
}
}
लेकिन जब मैं संपत्ति RightToLeftLayout = true
और RightToLeft = true
यह काम नहीं करता निर्धारित करते हैं, TabPage
खिताब बंद करें बटन दिखाई देते हैं और यह भी नहीं है।
तो RightToLeft
संपत्ति स्वीकार करने वाले तरीके को कैसे ठीक किया जाए?
public static Rectangle GetRTLCoordinates(Rectangle container, Rectangle drawRectangle)
{
return new Rectangle(
container.Width - drawRectangle.Width - drawRectangle.X,
drawRectangle.Y,
drawRectangle.Width,
drawRectangle.Height);
}
और जब RTL मोड में पेंटिंग, निर्देशांक इस तरह की गणना:
tabRect = GetRTLCoordinates(this.tabControl2.ClientRectangle, tabRect);
इसके अलावा
आप
एक TabControl पर ड्राइंग करके, यह आप 'खुद के द्वारा RightToLeft' संपत्ति की प्रक्रिया पूरी की, संपादन' TabControl2_DrawItem' – J3soon
में अपने कोड Wher संपादित करने की कोशिश का मतलब है? मैंने r.offset को बदलने की कोशिश की लेकिन यह 'टैबकंट्रोल 2_DrawItem' ब्लॉक में पहले टैबपेज – user4340666
के लिए काम करता है,' if (RightToLeft) 'स्थिति – J3soon