DataGridView列宽为百分比

时间:2013-03-22 20:02:23

标签: c# .net datagridview cells dynamic-columns

有没有办法让DataGridView中的每一列占总网格的百分比宽度?我目前使用的是固定宽度,但是希望为一列提供15%的宽度,另一列提供25%的宽度,依此类推,以便填充表格的100%并使用网格调整大小。

4 个答案:

答案 0 :(得分:15)

尝试使用DataGridViewColumn.FillWeight属性。基本上,您为每列指定权重,并根据这些权重重新调整列的大小。 MSDN arcticle并不是那么好。请参阅以下文章以获得更好的解释 -

Presenting Data with the DataGridView Control in .NET 2.0—Automatic Column Sizing

答案 1 :(得分:1)

可以使用值转换器
这会减去一个参数,但您可以将其除以参数。

<local:WidthConverter x:Key="widthConverter"/>

<GridViewColumn Width="{Binding ElementName=lvCurDocFields, Path=ActualWidth, Converter={StaticResource widthConverter}, ConverterParameter=100}">



 [ValueConversion(typeof(double), typeof(double))]
    public class WidthConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            // value is the total width available
            double otherWidth;
            try
            {
                otherWidth = System.Convert.ToDouble(parameter);
            }
            catch
            {
                otherWidth = 100;
            }
            if (otherWidth < 0) otherWidth = 0;

            double width = (double)value - otherWidth;
            if (width < 0) width = 0;
            return width; // columnsCount;
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }

答案 2 :(得分:1)

尝试一下

metric messages-behind-high-watermark

答案 3 :(得分:-4)

只需创建皮肤文件。 并通过网络配置

应用它