DevExpress WinForms中文教程:Grid View - 如何实现自动调整宽度模式?
DevExpress WinForms拥有180+组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!
本文主要介绍如何使用DevExpress WinForms Data Grid组件实现自动调整宽度。
获取DevExpress WinForms v24.1正式版下载
列宽模式基础
调整列或容器控件的大小,来查看网格是否自动调整列,使它们占据整个视图,并且不需要水平滚动条。
另一种可用的模式是在不发生自动调整的情况下,根据需要显示水平滚动条。
本教程将介绍这两种模式。
在列宽度模式之间切换
默认操作时自动调整列宽度,要禁用它请跳转到View(视图)设置并在GridView.OptionsView目录禁用GridOptionsView.ColumnAutoWidth选项,这将使水平滚动条在必要时可用。
如果将该选项切换回其默认状态,则可以看到在更改控件宽度时,所有列的大小是如何按比例调整的。
强制列具有固定的宽度
如果您希望某个列在发生这些调整时保持其宽度,请启用该列的OptionsColumn.FixedWidth选项。
响应列宽度变化
正如上一篇教程中提到的,您可以使用View的GridView.ColumnWidthChanged事件响应列宽度的更改,本文中的处理程序根据当前宽度调整Unit Price列的格式。
C#
private void gridView1_ColumnWidthChanged(object sender, DevExpress.XtraGrid.Views.Base.ColumnEventArgs e) { if (e.Column != colUnitPrice) return; colUnitPrice.DisplayFormat.FormatString = (colUnitPrice.Width > 50) ? "c2" : "c0"; }
如果运行这个应用程序,请注意当您调整列的大小时,这段代码是如何隐藏价格的小数的。
但是如果您调整容器的大小,列会缩小,但不会应用正确的格式。要解决这个问题,还需要处理网格控件的SizeChanged事件。由于列的大小调整是由于自动宽度模式,列的GridColumn.Width属性实际上并没有改变,您需要在处理程序中使用GridColumn.VisibleWidth属性,还要添加代码来显示带有两个属性值的AlertControl,以便对它们进行比较。
C#
private void gridControl_SizeChanged(object sender, EventArgs e) { colUnitPrice.DisplayFormat.FormatString = (colUnitPrice.VisibleWidth > 50) ? "c2" : "c0"; alertControl1.Show(this, "Column Width Update", string.Format("Width is {0}, \nVisibleWidth is {1}", colUnitPrice.Width, colUnitPrice.VisibleWidth)); }
运行应用程序并调整容器大小,GridColumn.Width属性保持不变,而GridColumn.VisibleWidth反映了实际的屏幕大小,从而允许格式化代码工作。