在C# 类中引用窗体中的 控件问题

来源:百度知道 编辑:UC知道 时间:2024/06/06 13:54:06
在类中的代码为;
public System.Windows.Forms.PictureBox picture;
public System.Windows.Forms.PictureBox Picture
{
get { return picture; }
set { picture = value; }
}
public void Hua(int m, int n, bool WB)
{
if (IS == true)
{
if (CanDown(m, n))
{
g = Graphics.FromImage(path);
if (WB == true)
{
path1 = global::五子棋_.Properties.Resources.pictureBox3_Image;
}
else
{
path1 = global::五子棋_.Properties.Resources.pictureBox2_Image;
}
g.DrawImage(path1, m * 35 - 16 + 21, n * 35 - 16 + 24);
g.Dispose();
picture.Image = path;

你的pictureBox1没有实例化.
除非是,像这样
zhang.Picture = new PictureBox();
或者你这段代码不要放在构造函数里面,至少不能放在InitializeComponent()之前.
======================================
仔细看一下我的回答吧,
pictureBox1在你以下赋值之前,尚未实例化.
zhang.picture = pictureBox1;
一般来说,如果是Winform中的PictureBox控件的话会在InitializeComponent()中被实例化,如果在实例化之前被引用,就会出现未将对象引用设置到对象的实例的错误.
你可以通过尝试一下代码明确看清问题.
if(pictureBox1 != null){
zhang.picture = pictureBox1;
}
else{
throw new NullReferenceException("pictureBox1尚未实例化");
}

一般子控件的初始化 生成的代码都会放到 窗 体的构造函数里. 所以在load里不会出现 说有些窗体上的控件为null

除非你这段代码写在了 构造函数的 InitializeComponent() 之前 就肯定会出现这问题,要不是的话,就是你问题没描述清楚了..