可浏览(假)属性我想在DataGridView
控件来显示System.ServiceProcess.ServiceController
的MachineName
属性:如何显示在DataGridView中
dataGridView1.DataSource = ServiceController.GetServices();
它不添加MachineName
财产。据我所知,这是由于该属性的[Browsable(false)]
属性。
但是,当我将列添加手动像这样:
dataGridView1.ColumnCount = 2;
dataGridView1.AutoGenerateColumns = false;
dataGridView1.Columns[0].Name = "Machine Name";
dataGridView1.Columns[0].DataPropertyName = "MachineName";
dataGridView1.Columns[1].Name = "Display Name";
dataGridView1.Columns[1].DataPropertyName = "DisplayName";
BindingSource bs = new BindingSource();
bs.DataSource = ServiceController.GetServices();
dataGridView1.DataSource = bs;
我希望要填充的MachineName
列,而实际上而列被创建在列中显示的值为空。
有没有解决方法,所以我可以显示此属性?
不是重复:
我并不想重写数据网格视图控件,以使DataGrid鉴于AutoGenerateColumns属性将成为设计师可见。 我试图在DataGridView中显示[Browsable(false)]
属性的ServiceController属性。
我的人最终的解决方案,感兴趣:
private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (e.ColumnIndex < 0 || e.RowIndex < 0)
return;
if (this.dataGridView1.Columns[e.ColumnIndex].DataPropertyName == "MachineName")
{
var model = this.dataGridView1.Rows[e.RowIndex].DataBoundItem as ServiceController;
if (model != null)
e.Value = model.MachineName;
}
}
的可能的复制[DataGridView中的AutoGenerateColumns设置为true以某种方式(http://stackoverflow.com/问题/ 1189576/datagridview-autogeneratecolumns-is-set-to-true-somehow) –
哪个文章完全解决了这个问题?这里的列不会自动生成,但不会显示数据。 –