[英]c#: Invalid Cast Exception
任何人都可以幫我解決這個問題,我真的在努力找出如何糾正此錯誤:
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());
}
}
}
類型的未處理異常
Test.exe中發生了'System.InvalidCastException'
附加信息:無法將類型為“ System.Windows.Forms.DataGridView”的對象轉換為類型為“ Test.ModDataGridView”。
確定要只添加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());
}
}
}
使用匿名類型var
foreach (var item in pnl.Controls)
{
if(item.GetType() == typeof(ModDataGridView))
{
txt.AppendText(item.GetType().ToString());
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.