[英]Hide DataGridView column position 0 & 1 programmaticly
Im trying to set column on position 0 & 1 visibility to false 我试图将位置0和1的可见性设置为false
My Code: 我的代码:
mainContenttabControl.TabPages.Add(myTabPage);
mainContenttabControl.TabPages[i].Controls.Add(new DataGridView()
{
Name = "dataGridView_" + tabTitle,
Dock = DockStyle.Fill,
DataSource = selectedSensors,
AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill,
//SET HERE COLUMN VISIBLITY = false
});
But i cant acces here the property .Column i also tryed to write a function after that gets called after my "setDataGridViews()" function but it only works when the Form is allready loaded 但是我不能在这里访问属性.Column,我也尝试编写一个函数,该函数在我的“ setDataGridViews()”函数之后被调用,但仅在已加载窗体时才起作用
private void hideDatalayerColumns()
{
int dataGridViewHardwareIndex = mainContenttabControl.TabPages[0].Controls.IndexOfKey("dataGridView_" + "Hardware");
int dataGridViewSensorsIndex = mainContenttabControl.TabPages[1].Controls.IndexOfKey("dataGridView_" + "Sensors");
int dataGridViewServiceIndex = mainContenttabControl.TabPages[2].Controls.IndexOfKey("dataGridView_" + "Service");
int dataGridViewRepairIndex = mainContenttabControl.TabPages[3].Controls.IndexOfKey("dataGridView_" + "Repair");
if (dataGridViewHardwareIndex >= 0)
{
DataGridView myTabGridViewHardware = mainContenttabControl.TabPages[0].Controls[dataGridViewHardwareIndex] as DataGridView;
myTabGridViewHardware.Columns[0].Visible = false;
myTabGridViewHardware.Columns[1].Visible = false;
}
if (dataGridViewSensorsIndex >= 0)
{
DataGridView myTabGridViewSensors = mainContenttabControl.TabPages[1].Controls[dataGridViewSensorsIndex] as DataGridView;
myTabGridViewSensors.Columns[0].Visible = false;
myTabGridViewSensors.Columns[1].Visible = false;
}
if (dataGridViewServiceIndex >= 0)
{
DataGridView myTabGridViewService = mainContenttabControl.TabPages[2].Controls[dataGridViewServiceIndex] as DataGridView;
myTabGridViewService.Columns[0].Visible = false;
myTabGridViewService.Columns[1].Visible = false;
}
if (dataGridViewRepairIndex >= 0)
{
DataGridView myTabGridViewRepair = mainContenttabControl.TabPages[3].Controls[dataGridViewRepairIndex] as DataGridView;
myTabGridViewRepair.Columns[0].Visible = false;
myTabGridViewRepair.Columns[1].Visible = false;
}
}
Is there a workaround or a better solution that my two columns is .Visible = false ? 是否有解决方法或更好的解决方案,即我的两列为.Visible = false?
If you want to hide the first two columns of several DGVs in a Form is what I understand, then you could use the following Linq recursive function to return your DGVs and hide the target columns: 如果您想隐藏Form中几个DGV的前两列,那么我可以使用下面的Linq递归函数返回DGV并隐藏目标列:
private IEnumerable<DataGridView> GetAllDGVs(Control container)
{
var controls = container.Controls.Cast<Control>();
return controls.SelectMany(c => GetAllDGVs(c))
.Concat(controls.OfType<DataGridView>());
}
and the usage: 和用法:
private void hideDatalayerColumns()
{
GetAllDGVs(this).ToList().ForEach(dgv =>
{
dgv.Columns[0].Visible = false;
dgv.Columns[1].Visible = false;
});
}
Good luck. 祝好运。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.