AABBbaby

导航

DevExpress WinForms中文教程:Grid View - 如何实现自动调整宽度模式?

DevExpress WinForms拥有180+组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!

本文主要介绍如何使用DevExpress WinForms Data Grid组件实现自动调整宽度。

获取DevExpress WinForms v24.1正式版下载

列宽模式基础

调整列或容器控件的大小,来查看网格是否自动调整列,使它们占据整个视图,并且不需要水平滚动条。

DevExpress WinForms中文教程图集

另一种可用的模式是在不发生自动调整的情况下,根据需要显示水平滚动条。

DevExpress WinForms中文教程图集

本教程将介绍这两种模式。

在列宽度模式之间切换

默认操作时自动调整列宽度,要禁用它请跳转到View(视图)设置并在GridView.OptionsView目录禁用GridOptionsView.ColumnAutoWidth选项,这将使水平滚动条在必要时可用。

DevExpress WinForms中文教程图集

如果将该选项切换回其默认状态,则可以看到在更改控件宽度时,所有列的大小是如何按比例调整的。

强制列具有固定的宽度

如果您希望某个列在发生这些调整时保持其宽度,请启用该列的OptionsColumn.FixedWidth选项。

DevExpress WinForms中文教程图集
响应列宽度变化

正如上一篇教程中提到的,您可以使用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";
}

如果运行这个应用程序,请注意当您调整列的大小时,这段代码是如何隐藏价格的小数的。

DevExpress WinForms中文教程图集

但是如果您调整容器的大小,列会缩小,但不会应用正确的格式。要解决这个问题,还需要处理网格控件的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反映了实际的屏幕大小,从而允许格式化代码工作。

DevExpress WinForms中文教程图集

posted on 2024-12-11 10:05  AABBbaby  阅读(6)  评论(0编辑  收藏  举报