2016-09-22 73 views
0

谁能帮我这个,我真的很努力工作,如何更正此错误:C#:无效的转换异常

public class ModDataGridView : DataGridView 
    { 
    } 

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     ModDataGridView dgv2 = new ModDataGridView(); 
     pnl.Controls.Add(dgv2); //pnl is a Panel type 
     foreach (ModDataGridView item in pnl.Controls) 
     { 
      txt.AppendText(item.GetType().ToString()); 
     } 

    } 
} 

'System.InvalidCastException' occurred in Test.exe

Additional information: Unable to cast object of type 'System.Windows.Forms.DataGridView' to type 'Test.ModDataGridView'.

+0

是什么'pnl.Controls'的类型? – Mostafiz

+1

foreach上的错误(pnl.Controls中的ModDataGridView项)? – 2016-09-22 15:04:17

+0

它只是一个面板....将加入问题! –

回答

0

使用未处理的异常anonymouse型var

foreach (var item in pnl.Controls) 
    { 
     if(item.GetType() == typeof(ModDataGridView)) 
     { 
      txt.AppendText(item.GetType().ToString()); 
     } 
    } 
+0

谢谢,这工作(没有得到一个错误),但我上面发布的问题是从我原来的一个减少的问题。我特别想获取ModDataGridView类型的每个对象并在其上运行一些代码,以上只会查找每种类型的对象! –

+0

好吧我马更新代码 – Mostafiz

+0

看到更新希望这个帮助 – Mostafiz

1

你确定你只想增加了ModDataGridView

你可能会使用的OfType<>()

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     ModDataGridView dgv2 = new ModDataGridView(); 
     pnl.Controls.Add(dgv2); //pnl is a Panel type 
     foreach (ModDataGridView item in pnl.Controls.OfType<ModDataGridView>()) 
     { 
      txt.AppendText(item.GetType().ToString()); 
     } 

    } 
} 

如果你想所有控件,使用一个基类:

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     ModDataGridView dgv2 = new ModDataGridView(); 
     pnl.Controls.Add(dgv2); //pnl is a Panel type 
     foreach (Control item in pnl.Controls) 
     { 
      txt.AppendText(item.GetType().ToString()); 
     } 

    } 
} 
+0

辉煌,谢谢 –