[英]Hide DataGridView column position 0 & 1 programmaticly
我試圖將位置0和1的可見性設置為false
我的代碼:
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
});
但是我不能在這里訪問屬性.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;
}
}
是否有解決方法或更好的解決方案,即我的兩列為.Visible = false?
如果您想隱藏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>());
}
和用法:
private void hideDatalayerColumns()
{
GetAllDGVs(this).ToList().ForEach(dgv =>
{
dgv.Columns[0].Visible = false;
dgv.Columns[1].Visible = false;
});
}
祝好運。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.