Как преобразовать объект Swift в словарь

Чтобы удалить контрольную метку, вы должны установить 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);
    }
}
30
задан JL Gradley 12 August 2015 в 16:58
поделиться

1 ответ

Мое решение этого будет чем-то вроде этого:

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 }
0
ответ дан 27 November 2019 в 23:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: