Мне лично не нравится снабжать префиксом название хранимой процедуры sp_ - это избыточно, IMO. Вместо этого мне нравится снабжать префиксом их "единицу функциональности" идентификатор. например, я назову sprocs для контакта с заказами order_Save, order_GetById, order_GetByCustomer, и т.д. Это сохраняет их всех логически сгруппированными в студии управления и мешает выбирать неправильную. (GetOrderByProduct, GetCustomerById, и т.д....)
, Конечно, это - персональное предпочтение, другие люди могут предпочесть иметь все Собирание sprocs, все Сохранения, и т.д.
Просто мой 2c.
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));
}
}
Установите для свойства OwnerDraw значение true.
Затем вы можете обработать DrawItem , DrawSubItem и ] DrawColumnHeader события для рисования на определенных элементах ListView.
Вы не можете просто переопределить метод OnPaint ()
. Этот метод ничего не делает в ListView. Точно так же OwnerDrawn
позволяет настраивать каждую ячейку, но не позволяет закрашивать элемент управления в целом.
Используйте ObjectListView (оболочку с открытым исходным кодом для .NET WinForms ListView) и используйте его функцию Overlay . Это позволяет вам легко сделать что-то вроде этого:
Это было создано с помощью этого кода:
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;