Чтобы удалить контрольную метку, вы должны установить UserPaint
в true, а затем сами рисовать весь элемент управления вкладками, включая границы, текст, фон, выделение, горячее отслеживание и т. д.
Следующий код рисует только текст вкладки и фон:
public class TC2 : TabControl {
public TC2() {
this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw | ControlStyles.UserPaint, true);
}
protected override void OnPaint(PaintEventArgs e) {
base.OnPaint(e);
var g = e.Graphics;
TabPage currentTab = this.SelectedTab;
for (int i = 0; i < TabPages.Count; i++) {
TabPage tp = TabPages[i];
Rectangle r = GetTabRect(i);
Brush b = (tp == currentTab ? Brushes.LightSteelBlue : Brushes.LightGray);
g.FillRectangle(b, r);
TextRenderer.DrawText(g, tp.Text, tp.Font, r, tp.ForeColor);
}
}
protected override void OnPaintBackground(PaintEventArgs e) {
base.OnPaintBackground(e);
}
}
Мое решение этого будет чем-то вроде этого:
extension Encodable {
var dict : [String: Any]? {
guard let data = try? JSONEncoder().encode(self) else { return nil }
guard let json = try? JSONSerialization.jsonObject(with: data, options: []) as? [String:Any] else { return nil }
return json
}
}
и использование будет что-то вроде этого:
movies.compactMap { [111].dict }