我在TabControl1中有一个TabControl2。TabControl2在TabControl1的所有TabPages中。在TabControl2的TabPage是DataGridView,我需要与此DataGridView工作(Add.Rows等)。所有内容都是通过编程添加的。
我正在寻找找到合适的DataGridView的最佳方法,所以我需要类似这样的东西:
DataGridView xxx = TabControl2.SelectedTab.Controls.Find("data_grid_view_name", false).FirstOrDefault() as DataGridView ***in TabControl1.SelectedTab***
Find this DataGridView by more :
Foreach (var y in TabControl1.Controls.OfType<Tabpage>())
{
//looks like a dirty code for me
}发布于 2013-06-11 22:23:14
此Linq查询返回嵌套TabControls中的第一个DataGridView
var gridViews = from tp in this.tabControl1.TabPages.Cast<TabPage>()
from tc in tp.Controls.OfType<TabControl>()
from tp2 in tc.TabPages.Cast<TabPage>()
from grid in tp2.Controls.OfType<DataGridView>()
select grid;
DataGridView firstGrid = gridViews.FirstOrDefault();
// if(firstGrid != null) ...发布于 2013-06-11 22:05:30
我认为最直接的方法是:
tabControl1.Controls.Find("data_grid_view_name", true);发布于 2013-06-11 23:34:16
另一个例子:
string dgvName = "data_grid_view_name";
if (tabControl1.SelectedTab != null)
{
var nestedTabControl = (from TC in tabControl1.SelectedTab.Controls.OfType<TabControl>() select TC).FirstOrDefault();
if (nestedTabControl != null && nestedTabControl.SelectedTab != null)
{
Control[] matches = nestedTabControl.SelectedTab.Controls.Find(dgvName, true);
if (matches.Length > 0 && matches[0] is DataGridView)
{
DataGridView dgv = (DataGridView)matches[0];
// ... do something with "dgv" ...
}
}
}https://stackoverflow.com/questions/17046086
复制相似问题