DataGrid Width在Windows Mobile中没有任何影响。 C#

时间:2009-02-17 18:05:55

标签: c# windows-mobile

我是Windows Mobile开发的初学者,发现当我使用DataGridTextBoxColumn设置Width时,它不会影响DataGrid列的大小。 这是我的代码:

        DataGridTableStyle tableStyle = new DataGridTableStyle();
        tableStyle.MappingName = "MainStyle";

        DataGridTextBoxColumn tbcName = new DataGridTextBoxColumn();
        tbcName.Width = 120;
        tbcName.MappingName = "Name";
        tbcName.HeaderText = "Name";
        tableStyle.GridColumnStyles.Add(tbcName);

        DataGridTextBoxColumn tbcValue = new DataGridTextBoxColumn();
        tbcValue.Width = 200;
        tbcValue.MappingName = "Value";
        tbcValue.HeaderText = "Value";
        tableStyle.GridColumnStyles.Add(tbcValue);

        // dgUserAttributes is defined as a System.Windows.Forms.DataGrid
        dgUserAttributes.TableStyles.Clear();
        dgUserAttributes.TableStyles.Add(tableStyle);            

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

正如Henk Holterman所述,您必须将 DataGridTableStyle 映射到绑定到 DataGrid DataTable 的名称。或者,您可以将每个 DataGridTextBoxColumn MappingName 设置为绑定 DataTable DataColumn 的列名称>

假设您已在表单设计器中将名为 dgUserAttributes DataGrid 添加到名为 Form1 表单,可以使用下面的代码测试 DataGridTextBoxColumn width 属性如何更改显示的 DataGrid 中列的宽度。

同时检查您是否在设计时未将值设置为 dgUserAttributes TableStyles 集合,这可能会覆盖您以编程方式设置的值。

    public Form1()
    {
        InitializeComponent();

        //Create In-Memory DataTable
        DataTable myTable = new DataTable();

        // Add DataColumns to the DataTable.
        DataColumn myNameColumn = new DataColumn("Name");
        myNameColumn.DataType = System.Type.GetType("System.String");
        myNameColumn.DefaultValue = "default string";
        myTable.Columns.Add(myNameColumn);
        DataColumn myValueColumn = new DataColumn("Value");
        myValueColumn.DataType = System.Type.GetType("System.String");
        myValueColumn.DefaultValue = "default string";
        myTable.Columns.Add(myValueColumn);

        //Bind DataTable to dataGrid1
        dgUserAttributes.DataSource = myTable;

        DataGridTableStyle tableStyle = new DataGridTableStyle();
        //tableStyle.MappingName = "MainStyle";
        DataGridTextBoxColumn tbcName = new DataGridTextBoxColumn();
        tbcName.Width = 12; 
        tbcName.MappingName = "Name";
        tbcName.HeaderText = "Name";
        tableStyle.GridColumnStyles.Add(tbcName);
        DataGridTextBoxColumn tbcValue = new DataGridTextBoxColumn();
        tbcValue.Width = 300;
        tbcValue.MappingName = "Value";
        tbcValue.HeaderText = "Value";
        tableStyle.GridColumnStyles.Add(tbcValue);
        // dgUserAttributes is defined as a System.Windows.Forms.DataGrid
        dgUserAttributes.TableStyles.Clear();        
        dgUserAttributes.TableStyles.Add(tableStyle);           
    }