乐趣区

关于ui:干货放送界面控件DevExpress开发常用知识点全解

点击获取工具 >>

应用 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 寸的(夸大一点点,不过很多宽屏的),这样很多输入框就会被拉得很长,这样小小一个输入框,可能有很长的一段空白的间隔,那样可能真的不难看,如下图所示。

设置固定宽度,其实不是很麻烦,须要设置几个属性即可

  1. 设置控件的 SizeConstraintsType 为 DevExpress.XtraLayout.SizeConstraintsType.Custom;
  2. 设置控件的 FillControlToClientArea 为 False
  3. 设置控件的 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 中的实现很简略,如果须要,能够实现在本人的代码外面。

  1. 先实现 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();
}
}
}`

  1. 而后设置 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 中应该如何实现这个成果呢?

  1. 先在设计模式将一般的 GridView 转换为 BandedGridView 或者 AdvBandedGridView,这样能力反对这种多行表头的做法,如下所示。

  1. 定义一些字段,用来显示其中的内容,如下图所示。

  1. 定义一些 Band 列,设置相干的属性,并把设计界面中的字段列表拖动到对应过的 Band 列下面,这样就形成了一个 Band 列和字段内容的对应关系。

实现下面的绑定关系后,记得设置 GridView 控件的属性,使其不要显示本来的 ColumnHeader 等内容。

设置好这些内容,能力正当、完满显示出多行表头的信息。

八、在 GridControl 控件中应用 SearchLookUpEdit 构建数据疾速输出

一个理论的案例就是门诊的时候,医生用药的状况,除了抉择其余内容外,次要的就是疾速录入药品信息。咱们平时去大一点 的医院看病,如同看到的少数操作都是这样。还有一种形式就是销售人员提供的报价单,从产品外面抉择信息,而后批改下价格,这些场景都是很适宜这样的操作的。

本文转载自博客园 - 伍华聪 [](https://home.cnblogs.com/u/wu…

退出移动版