Пользовательский ListView в Winforms?

Мне лично не нравится снабжать префиксом название хранимой процедуры sp_ - это избыточно, IMO. Вместо этого мне нравится снабжать префиксом их "единицу функциональности" идентификатор. например, я назову sprocs для контакта с заказами order_Save, order_GetById, order_GetByCustomer, и т.д. Это сохраняет их всех логически сгруппированными в студии управления и мешает выбирать неправильную. (GetOrderByProduct, GetCustomerById, и т.д....)

, Конечно, это - персональное предпочтение, другие люди могут предпочесть иметь все Собирание sprocs, все Сохранения, и т.д.

Просто мой 2c.

6
задан Joan Venge 22 October 2009 в 02:19
поделиться

3 ответа

 class MyCustomlistView : ListView
    {
        public MyCustomlistView()
            : base()
        {
            SetStyle(ControlStyles.UserPaint, true);
        }
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
            e.Graphics.DrawString("This is a custom string", new Font(FontFamily.GenericSerif, 10, FontStyle.Bold), Brushes.Black, new PointF(0, 50));
        }

    }
6
ответ дан 8 December 2019 в 13:47
поделиться

Установите для свойства OwnerDraw значение true.

Затем вы можете обработать DrawItem , DrawSubItem и ] DrawColumnHeader события для рисования на определенных элементах ListView.

1
ответ дан 8 December 2019 в 13:47
поделиться

Вы не можете просто переопределить метод OnPaint () . Этот метод ничего не делает в ListView. Точно так же OwnerDrawn позволяет настраивать каждую ячейку, но не позволяет закрашивать элемент управления в целом.

Используйте ObjectListView (оболочку с открытым исходным кодом для .NET WinForms ListView) и используйте его функцию Overlay . Это позволяет вам легко сделать что-то вроде этого:

text over a ListView

Это было создано с помощью этого кода:

this.olv1.OverlayText.Alignment = ContentAlignment.BottomRight;
this.olv1.OverlayText.Text = "Trial version";
this.olv1.OverlayText.BackColor = Color.White;
this.olv1.OverlayText.BorderWidth = 2.0f;
this.olv1.OverlayText.BorderColor = Color.RoyalBlue;
this.olv1.OverlayText.TextColor = Color.DarkBlue;
10
ответ дан 8 December 2019 в 13:47
поделиться
Другие вопросы по тегам:

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