This repository has been archived by the owner on Sep 11, 2023. It is now read-only.
/
CustomGridControl.cs
90 lines (86 loc) · 3.74 KB
/
CustomGridControl.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
using System;
using System.Collections.Generic;
using System.Text;
using DevExpress.XtraGrid.Columns;
using DevExpress.Data.Filtering.Helpers;
using DevExpress.Data.Filtering;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraGrid;
using DevExpress.XtraGrid.Views.Grid.Drawing;
using DevExpress.XtraGrid.Views.Grid.ViewInfo;
using DevExpress.XtraGrid.Views.Base;
using DevExpress.XtraGrid.Registrator;
using DevExpress.XtraLayout;
using System.ComponentModel;
using DevExpress.Utils.Controls;
using DevExpress.Utils.Serializing;
namespace CustomGridColumn_MaxRowHeight
{
public class CustomGridView : GridView
{
public CustomGridView() : base() { }
protected internal virtual void SetGridControlAccessMetod(GridControl newControl) { SetGridControl(newControl); }
protected override string ViewName { get { return "CustomGridView"; } }
protected override ColumnViewOptionsView CreateOptionsView()
{
return new CustomGridOptionsView();
}
[Description("Provides access to the View's display options."), Category("Options"), DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
XtraSerializableProperty(XtraSerializationVisibility.Content, XtraSerializationFlags.DefaultValue),
XtraSerializablePropertyId(LayoutIdOptionsView)]
public new CustomGridOptionsView OptionsView { get { return base.OptionsView as CustomGridOptionsView; } }
}
public class CustomGridControl : GridControl
{
public CustomGridControl() : base() { }
protected override void RegisterAvailableViewsCore(InfoCollection collection)
{
base.RegisterAvailableViewsCore(collection);
collection.Add(new CustomGridInfoRegistrator());
}
protected override BaseView CreateDefaultView() { return CreateView("CustomGridView"); }
}
public class CustomGridInfoRegistrator : GridInfoRegistrator
{
public CustomGridInfoRegistrator() : base() { }
public override DevExpress.XtraGrid.Views.Base.ViewInfo.BaseViewInfo CreateViewInfo(BaseView view) { return new CustomGridViewInfo(view as GridView); }
public override string ViewName { get { return "CustomGridView"; } }
public override BaseView CreateView(GridControl grid)
{
CustomGridView view = new CustomGridView();
view.SetGridControlAccessMetod(grid);
return view;
}
}
public class CustomGridViewInfo : GridViewInfo
{
public CustomGridViewInfo(GridView gridView) : base(gridView) { }
protected override int CalcRowAutoHeight(System.Drawing.Graphics g, GridColumnsInfo colInfo, int rowHandle, int rowVisibleIndex, bool useCache, int level)
{
if (((CustomGridView)View).OptionsView.MaxRowHeight > 0)
return Math.Min(((CustomGridView)View).OptionsView.MaxRowHeight, base.CalcRowAutoHeight(g, colInfo, rowHandle, rowVisibleIndex, useCache, level));
return base.CalcRowAutoHeight(g, colInfo, rowHandle, rowVisibleIndex, useCache, level);
}
}
public class CustomGridOptionsView : GridOptionsView
{
int maxRowHeight;
public CustomGridOptionsView()
: base()
{
maxRowHeight = -1;
}
[Description("Get or set maximum row height."), DefaultValue(-1), XtraSerializableProperty()]
public virtual int MaxRowHeight
{
get { return maxRowHeight; }
set
{
if (maxRowHeight == value) return;
int prevValue = maxRowHeight;
maxRowHeight = value;
OnChanged(new BaseOptionChangedEventArgs("MaxRowHeight", prevValue, MaxRowHeight));
}
}
}
}