此问题已经在这里有了答案:
我是Windows窗体C#的新手。我正在尝试创建自己的控件,称为MyPictureBox,该控件派生自PictureBox。我给了它ToolValue的属性。然后在单击事件中,我已将发件人强制转换为MyPictureBox并设置属性的值。我收到运行时错误消息,提示System.NullReferenceException:“对象引用未设置为对象的实例。”图片为空。
//MyPictureBox class
public partial class MyPictureBox : PictureBox
{
// Declares the property.
public int ToolValue {get;set; }
}
//Click event
private void LoadImage_Click(object sender, EventArgs e)
{
//cast sender to MyPictureBox
MyPictureBox pic = sender as MyPictureBox;
switch (imageType)
{
case ImageType.None:
int noneIndex = (int)ImageType.None;
pic.ToolValue = noneIndex;
break;
case ImageType.Hero:
int heroIndex = (int)ImageType.Hero;
pic.ToolValue = heroIndex; //gets an error **pic was null**
break;
case ImageType.Wall:
int wallIndex = (int)ImageType.Wall;
pic.ToolValue = wallIndex;
break;
default:
break;
}
}
ImageType在这里是枚举的名称。
您不能将基类转换为派生类。将MyPictureBox添加到您的窗体,而不是PictureBox。