【问题标题】:DataGrid Width has no affect in Windows Mobile. C#DataGrid Width 在 Windows Mobile 中没有影响。 C#
【发布时间】:2009-02-26 06:18:38
【问题描述】:

我是 Windows Mobile 开发的初学者,发现当我使用 DataGridTextBoxColumn 设置宽度时,它不会影响 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);            

有什么想法吗?

【问题讨论】:

    标签: c# windows-mobile


    【解决方案1】:

    正如Henk Holterman 所说,您必须将DataGridTableStyle 映射到绑定到DataGridDataTable 的名称。作为替代方案,您可以将每个 DataGridTextBoxColumnMappingName 设置为绑定 DataTableDataColumn 的列名>.

    假设您已在表单设计器中将名为 dgUserAttributesDataGrid 添加到名为 Form1Form 中,您可以使用以下代码测试 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);           
        }
    

    【讨论】:

    • 在您的示例中,如果有 10 列,您需要添加 10 列还是只添加您关心的列?
    猜你喜欢
    • 1970-01-01
    • 2021-07-05
    • 2015-11-26
    • 2021-02-23
    • 1970-01-01
    • 2014-03-12
    • 2011-09-20
    • 1970-01-01
    • 2020-09-06
    相关资源
    最近更新 更多