共计 4709 个字符,预计需要花费 12 分钟才能阅读完成。
点击获取工具 >>
应用 DevExpress 控件来做我的项目开发曾经有很长一段时间了,在摸索开发到客户刻薄要求的过程中,其中碰到过很多问题须要解决的,随着一个个问题的解决,也留下很多对 DevExpress 控件的应用教训及教训,综合设计到的多个我的项目的问题,对这些开发罕用的要点进行总结,不便他人也不便本人。提供这些解决办法,一个能够疾速利用到我的项目中,二个也能够作为对界面开发的更高要求看待本人的我的项目,使得本人的货色更加完满,更加受欢迎。
一、GridControl 控件的数据显示的款式管制
如上两图所示,咱们有时候须要管制列表拜访过的色彩变动,或者是工夫显示格局等内容,这个时候设置 GridView 的 RowCellStyle 即可实现,如下所示。
`this.gridView1.RowCellStyle += new DevExpress.XtraGrid.Views.Grid.RowCellStyleEventHandler(gridView1_RowCellStyle);
void gridView1_RowCellStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e)
{
if (e.Column.FieldName == “PublishType”)
{
if (e.CellValue != null && e.CellValue.ToString() == “ 中介 ”)
{
e.Appearance.BackColor = Color.DeepSkyBlue;
e.Appearance.BackColor2 = Color.LightCyan;
}
}
if (e.Column.FieldName == “PublishTime”)
{
e.Column.DisplayFormat.FormatString = “yyyy-MM-dd HH:mm:ss”;
}
if (e.Column.FieldName == “Title”)
{
string id = this.winGridViewPager1.gridView1.GetRowCellDisplayText(e.RowHandle, “Id”);
if (historyDict.ContainsKey(id))
{
e.Appearance.BackColor = Color.DeepSkyBlue;
e.Appearance.BackColor2 = Color.LightCyan;
}
}
}`
二、在 LayoutControl 布局中固定控件宽度
固定宽度后的实在成果。
为了使得界面统一性及更好的控制性,咱们个别应用 LayoutControl 布局控件作为咱们增加控件的布局容器,然而这个控件默认是对其中的控件进行按窗口比例进行缩放的,有些客户就不喜爱这些特点,因为他们的显示器可能是 30 寸的(夸大一点点,不过很多宽屏的),这样很多输入框就会被拉得很长,这样小小一个输入框,可能有很长的一段空白的间隔,那样可能真的不难看,如下图所示。
设置固定宽度,其实不是很麻烦,须要设置几个属性即可
- 设置控件的 SizeConstraintsType 为 DevExpress.XtraLayout.SizeConstraintsType.Custom;
- 设置控件的 FillControlToClientArea 为 False
- 设置控件的 ControlMaxSize 的大小(必要时也能够设置 ControlMinSize),设置例子如下所示。
三、GridControl 中的 GridView 内容打印
因为 GridView 的良好封装性,实现打印的代码很简略。
`private void menu_Print_Click(object sender, EventArgs e)
{
PrintableComponentLink link = new PrintableComponentLink(new PrintingSystem());
link.Component = this.gridControl1;
link.Landscape = true;
link.PaperKind = System.Drawing.Printing.PaperKind.A3;
link.CreateMarginalHeaderArea += new CreateAreaEventHandler(Link_CreateMarginalHeaderArea);
link.CreateDocument();
link.ShowPreview();
}
private void Link_CreateMarginalHeaderArea(object sender, CreateAreaEventArgs e)
{
string title = string.Format(“ 年度大体检 -({0} 年度 )”, this.txtYear.Text);
PageInfoBrick brick = e.Graph.DrawPageInfo(PageInfo.None, title, Color.DarkBlue,
new RectangleF(0, 0, 100, 21), BorderSide.None);
brick.LineAlignment = BrickAlignment.Center;
brick.Alignment = BrickAlignment.Center;
brick.AutoWidth = true;
brick.Font = new System.Drawing.Font(“ 宋体 ”, 11f, FontStyle.Bold);
}`
四、设置 GridView 的行指示器(行头)显示行号
在我的分页控件以及 Winform 开发框架很多我的项目介绍外面,很多都显示了行号,其实这个在 DevExpress 中的实现很简略,如果须要,能够实现在本人的代码外面。
- 先实现 GridView 的 CustomDrawRowIndicator 事件,实现代码如下所示。
`private void advBandedGridView1_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)
{
e.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
if (e.Info.IsRowIndicator)
{
if (e.RowHandle >= 0)
{
e.Info.DisplayText = (e.RowHandle + 1).ToString();
}
else if (e.RowHandle < 0 && e.RowHandle > -1000)
{
e.Info.Appearance.BackColor = System.Drawing.Color.AntiqueWhite;
e.Info.DisplayText = “G” + e.RowHandle.ToString();
}
}
}`
- 而后设置 GridView 控件的 IndicatorWidth 为适合的宽度,如 40 左右则比拟好。
这样设置后,就能顺利显示行号了,是不是很不便呢。
五、GridView 表头多行显示(折行),表头及行内容居中操作
在一些自定义的列表中,咱们为了正当显示表头的内容,可能会要求表头显示的文字能够折行显示,而后还须要内容居中显示,那么在 DevExpress 该如何操作呢,代码设置如下所示。
`// 表头折行设置
this.gridView1.ColumnPanelRowHeight = 40;
this.gridView1.OptionsView.AllowHtmlDrawHeaders = true;
this.gridView1.Appearance.HeaderPanel.TextOptions.WordWrap = DevExpress.Utils.WordWrap.Wrap;
// 表头及行内容居中显示
this.gridView1.Appearance.Row.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
this.gridView1.Appearance.HeaderPanel.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;`
而后设置表头的时候,设置内容应用 rn 来进行换行,如:体重 rn(kg)
上面是我分页控件外面的例子设置,供参考。
`this.winGridViewPager1.AddColumnAlias(“Weight”, “ 体重 rn(kg)”);
this.winGridViewPager1.AddColumnAlias(“Pulse”, “ 脉搏 rn( 次)”);
this.winGridViewPager1.AddColumnAlias(“BloodSystolic”, “ 收缩压 ”);
this.winGridViewPager1.AddColumnAlias(“BloodDiastolic”, “ 舒张压 ”);
this.winGridViewPager1.AddColumnAlias(“SightLeft”, “ 视力 rn( 左)”);
this.winGridViewPager1.AddColumnAlias(“SightRight”, “ 视力 rn( 右)”);`
六、控件内容输出问题
在客户应用软件的时候,反馈说有一些数字输入框、日期输入框,不反对键盘输入内容,经测试,的确是存在这个问题,默认的数字、日期等输出,都要切换输入法才能够输出,不能默认就反对数字的输出,那么是否有方法解决呢,当然方法总是有的。
其实只须要设置 ImeMode=Off 即可解决问题,对于这个属性,大家能够参考上面的介绍。(就开发而言,记得逢数字,日期的控件,必须设置 ImeMode=Off,否则你的软件应用客户会骂娘。
ImeMode 枚举: 指定一个值,该值是用来确定在选定了对象时该对象的输入法编辑器 (IME) 的状态。以下是微软的解释:
七、多行表头的实现
有时候,咱们为了一些非凡的须要,要对表头进行特地的排版,使其反对多行表头的成果,如上图所示,这样不便对各项内容进行归类显示,易于浏览,在 DevExpress 中应该如何实现这个成果呢?
- 先在设计模式将一般的 GridView 转换为 BandedGridView 或者 AdvBandedGridView,这样能力反对这种多行表头的做法,如下所示。
- 定义一些字段,用来显示其中的内容,如下图所示。
- 定义一些 Band 列,设置相干的属性,并把设计界面中的字段列表拖动到对应过的 Band 列下面,这样就形成了一个 Band 列和字段内容的对应关系。
实现下面的绑定关系后,记得设置 GridView 控件的属性,使其不要显示本来的 ColumnHeader 等内容。
设置好这些内容,能力正当、完满显示出多行表头的信息。
八、在 GridControl 控件中应用 SearchLookUpEdit 构建数据疾速输出
一个理论的案例就是门诊的时候,医生用药的状况,除了抉择其余内容外,次要的就是疾速录入药品信息。咱们平时去大一点 的医院看病,如同看到的少数操作都是这样。还有一种形式就是销售人员提供的报价单,从产品外面抉择信息,而后批改下价格,这些场景都是很适宜这样的操作的。
本文转载自博客园 - 伍华聪 [](https://home.cnblogs.com/u/wu…