Reputation: 131
can anyone help me out with this, i'm really struggling to work out how to correct this error:
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());
}
}
}
An unhandled exception of type
'System.InvalidCastException' occurred in Test.exe
Additional information: Unable to cast object of type 'System.Windows.Forms.DataGridView' to type 'Test.ModDataGridView'.
Upvotes: 0
Views: 329
Reputation: 7352
Use anonymouse type var
foreach (var item in pnl.Controls)
{
if(item.GetType() == typeof(ModDataGridView))
{
txt.AppendText(item.GetType().ToString());
}
}
Upvotes: 0
Reputation: 22083
Are you sure you only want to add the ModDataGridView
?
You might make use of the 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());
}
}
}
If you want all controls, use a base class:
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());
}
}
}
Upvotes: 1