TabPages
の閉じるボタンをTabControl
に追加したいとします。私はこのコードを試してみて、それが右から左へのTabControlで正常に動作します:TabPagesの右ボタンを閉じる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);
}
}
}
をしかし、私はRightToLeftLayout = true
とRightToLeft = true
が、それは動作しませんプロパティを設定すると、TabPage
タイトルも閉じるボタンを表示されません。
RightToLeft
プロパティを受け入れる方法でコードを修正するにはどうすればよいですか?あなたはRTLへの四角形の座標を変換する関数を作成することができます
は、それはあなたが自分で 'RightToLeft'プロパティを処理する必要があることを意味し、編集するWher' TabControl2_DrawItem' – J3soon
でコードを編集してみては?私はr.offsetを変更しようとしましたが、この作業は 'TabControl2_DrawItem'ブロックの最初のタブページ – user4340666
の' if(RightToLeft) '条件を追加しました – J3soon