本程序的目标是使用DevExpress建立一个选择,设置元素的颜色的对话框。在程序中,有n个元素要设置颜色,选择要设置元素的,并且选颜色进行设置。
示意图如下:
代码如下:
public
partial
class
DlgThemeChart : Form
... {
Field#region Field
private GisAreaLayer _layer = null;
private double _span = 30;
private double _xSpan = 10;
private ThemeType _myThemeType = ThemeType.isHistogram;
private DataTable _sourceTable = new DataTable("Source");
DevExpress.XtraEditors.Repository.RepositoryItemColorEdit repositoryItemColorEdit1 = new DevExpress.XtraEditors.Repository.RepositoryItemColorEdit();
private List<string> _attributesSelected = new List<string>();
private List<Color> _colorsSelected = new List<Color>();
readonly string _constShowString = "isShow";
readonly string _constAttributesString = "Attributes";
readonly string _constColorString = "Color";
#endregion
Properties#region Properties
public GisAreaLayer Layer ...{ get ...{ return _layer; } set ...{ _layer = value; } }
public double Span ...{ get ...{ return _span; } }
public double XSpan ...{ get ...{ return _xSpan; } }
public List<string> AttributesSelected ...{ get ...{ return _attributesSelected; } }
public List<Color> ColorsSelected ...{ get ...{ return _colorsSelected; } }
public ThemeType MyThemeType ...{ get ...{ return _myThemeType; } }
#endregion
public DlgThemeChart()
...{
InitializeComponent();
}
private void DlgThemeChart_Load(object sender, EventArgs e)
...{
InitGridView();
}
初始化GridView#region 初始化GridView
private void InitGridView()
...{
ModifySoureTable();
FormatGridView();
AddRowsToGradView();
gridView1.RefreshEditor(true);
}
private void FormatGridView()
...{
gridView1.OptionsCustomization.AllowFilter = false;
gridView1.OptionsCustomization.AllowSort = false;
gridView1.OptionsView.ShowGroupPanel = false;
gridControl1.DataSource = _sourceTable.DefaultView;//连接数据表
gridView1.PopulateColumns();
gridView1.Columns[_constAttributesString].Caption = "字段名称";
gridView1.Columns[_constShowString].Caption = "请选择";
gridView1.Columns[_constColorString].Caption = "颜色设置";
gridView1.Columns[_constColorString].ColumnEdit = repositoryItemColorEdit1;
}
private void ModifySoureTable()
...{
_sourceTable.Columns.Add(_constAttributesString, typeof(string));//属性字段
_sourceTable.Columns.Add(_constShowString, typeof(bool));//是否显示字段
_sourceTable.Columns.Add(_constColorString, typeof(Color));//颜色字段
}
private void AddRowsToGradView()
...{
foreach (GisAttribute attribute in _layer.Attributes) ...{
if ((attribute.Type.Equals(typeof(System.Int32)))
||(attribute.Type.Equals(typeof(System.Int64)))
||(attribute.Type.Equals(typeof(System.Double)))) ...{
DataRow row = _sourceTable.NewRow();
row[_constColorString] = Color.Red;
row[_constAttributesString] = attribute.Name;
row[_constShowString] = false;
_sourceTable.Rows.Add(row);
}
}
}
#endregion
private void label1_Click(object sender, EventArgs e)
...{
}
private void btnOK_Click(object sender, EventArgs e)
...{
GetColorsAndAttrs();
if (AttributesSelected.Count == 0) ...{
MessageBox.Show("请选择显示的项目");
return;
}
if (!GetSpan()) ...{
return;
}
DialogResult = DialogResult.OK;
}
private bool GetSpan()
...{
try ...{
_span = Convert.ToDouble(domainUpDownSpan.Text);
if (_span < 0) ...{
throw new ArgumentOutOfRangeException();
}
} catch ...{
MessageBox.Show("显示范围输入有误");
return false;
}
try ...{
_xSpan = Convert.ToDouble(domainUpDownXSpan.Text);
if (_xSpan < 0) ...{
throw new ArgumentOutOfRangeException();
}
} catch ...{
MessageBox.Show("底边长度有误");
return false;
}
return true;
}
private void rBtnHistogram_CheckedChanged(object sender, EventArgs e)
...{
_myThemeType = ThemeType.isHistogram;
labelSpan.Text = "柱状图最高值:";
labelXSpan.Visible = true;
domainUpDownXSpan.Visible = true;
}
private void rBtnPie_CheckedChanged(object sender, EventArgs e)
...{
_myThemeType = ThemeType.isPie;
labelSpan.Text = "饼图最大半径";
domainUpDownSpan.Text = "10";
labelXSpan.Visible = false;
domainUpDownXSpan.Visible = false;
}
private void GetColorsAndAttrs()
...{
_attributesSelected.Clear();
_colorsSelected.Clear();
for (int i = 0; i < _sourceTable.Rows.Count; i++) ...{
if (true == (bool)_sourceTable.Rows[i][_constShowString]) ...{
_attributesSelected.Add(_sourceTable.Rows[i][_constAttributesString].ToString());
_colorsSelected.Add((Color)(_sourceTable.Rows[i][_constColorString]));
}
}
}
}
... {
Field#region Field
private GisAreaLayer _layer = null;
private double _span = 30;
private double _xSpan = 10;
private ThemeType _myThemeType = ThemeType.isHistogram;
private DataTable _sourceTable = new DataTable("Source");
DevExpress.XtraEditors.Repository.RepositoryItemColorEdit repositoryItemColorEdit1 = new DevExpress.XtraEditors.Repository.RepositoryItemColorEdit();
private List<string> _attributesSelected = new List<string>();
private List<Color> _colorsSelected = new List<Color>();
readonly string _constShowString = "isShow";
readonly string _constAttributesString = "Attributes";
readonly string _constColorString = "Color";
#endregion
Properties#region Properties
public GisAreaLayer Layer ...{ get ...{ return _layer; } set ...{ _layer = value; } }
public double Span ...{ get ...{ return _span; } }
public double XSpan ...{ get ...{ return _xSpan; } }
public List<string> AttributesSelected ...{ get ...{ return _attributesSelected; } }
public List<Color> ColorsSelected ...{ get ...{ return _colorsSelected; } }
public ThemeType MyThemeType ...{ get ...{ return _myThemeType; } }
#endregion
public DlgThemeChart()
...{
InitializeComponent();
}
private void DlgThemeChart_Load(object sender, EventArgs e)
...{
InitGridView();
}
初始化GridView#region 初始化GridView
private void InitGridView()
...{
ModifySoureTable();
FormatGridView();
AddRowsToGradView();
gridView1.RefreshEditor(true);
}
private void FormatGridView()
...{
gridView1.OptionsCustomization.AllowFilter = false;
gridView1.OptionsCustomization.AllowSort = false;
gridView1.OptionsView.ShowGroupPanel = false;
gridControl1.DataSource = _sourceTable.DefaultView;//连接数据表
gridView1.PopulateColumns();
gridView1.Columns[_constAttributesString].Caption = "字段名称";
gridView1.Columns[_constShowString].Caption = "请选择";
gridView1.Columns[_constColorString].Caption = "颜色设置";
gridView1.Columns[_constColorString].ColumnEdit = repositoryItemColorEdit1;
}
private void ModifySoureTable()
...{
_sourceTable.Columns.Add(_constAttributesString, typeof(string));//属性字段
_sourceTable.Columns.Add(_constShowString, typeof(bool));//是否显示字段
_sourceTable.Columns.Add(_constColorString, typeof(Color));//颜色字段
}
private void AddRowsToGradView()
...{
foreach (GisAttribute attribute in _layer.Attributes) ...{
if ((attribute.Type.Equals(typeof(System.Int32)))
||(attribute.Type.Equals(typeof(System.Int64)))
||(attribute.Type.Equals(typeof(System.Double)))) ...{
DataRow row = _sourceTable.NewRow();
row[_constColorString] = Color.Red;
row[_constAttributesString] = attribute.Name;
row[_constShowString] = false;
_sourceTable.Rows.Add(row);
}
}
}
#endregion
private void label1_Click(object sender, EventArgs e)
...{
}
private void btnOK_Click(object sender, EventArgs e)
...{
GetColorsAndAttrs();
if (AttributesSelected.Count == 0) ...{
MessageBox.Show("请选择显示的项目");
return;
}
if (!GetSpan()) ...{
return;
}
DialogResult = DialogResult.OK;
}
private bool GetSpan()
...{
try ...{
_span = Convert.ToDouble(domainUpDownSpan.Text);
if (_span < 0) ...{
throw new ArgumentOutOfRangeException();
}
} catch ...{
MessageBox.Show("显示范围输入有误");
return false;
}
try ...{
_xSpan = Convert.ToDouble(domainUpDownXSpan.Text);
if (_xSpan < 0) ...{
throw new ArgumentOutOfRangeException();
}
} catch ...{
MessageBox.Show("底边长度有误");
return false;
}
return true;
}
private void rBtnHistogram_CheckedChanged(object sender, EventArgs e)
...{
_myThemeType = ThemeType.isHistogram;
labelSpan.Text = "柱状图最高值:";
labelXSpan.Visible = true;
domainUpDownXSpan.Visible = true;
}
private void rBtnPie_CheckedChanged(object sender, EventArgs e)
...{
_myThemeType = ThemeType.isPie;
labelSpan.Text = "饼图最大半径";
domainUpDownSpan.Text = "10";
labelXSpan.Visible = false;
domainUpDownXSpan.Visible = false;
}
private void GetColorsAndAttrs()
...{
_attributesSelected.Clear();
_colorsSelected.Clear();
for (int i = 0; i < _sourceTable.Rows.Count; i++) ...{
if (true == (bool)_sourceTable.Rows[i][_constShowString]) ...{
_attributesSelected.Add(_sourceTable.Rows[i][_constAttributesString].ToString());
_colorsSelected.Add((Color)(_sourceTable.Rows[i][_constColorString]));
}
}
}
}