我是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);
有什么想法吗?
答案 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);
}