【问题标题】:Instantiate object of a class under form class在表单类下实例化一个类的对象
【发布时间】:2017-04-17 16:50:13
【问题描述】:

我是 Windows 窗体的新手。我正在尝试实例化公共类的对象并在按下 button1 时调用方法 drawBoard()。方法drawBoard(),我想通过它设置pictureBox2的属性。但是代码不起作用。

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

        public class gameBoard :Form1
        {
            public void drawBoard()
            {
                pictureBox2.ImageLocation = @"E:\My Data\DoCx\CS\3rd Sem\OOP\proj\images\a.png";
                pictureBox2.SizeMode = PictureBoxSizeMode.Zoom;                      
            }            
        }

        private void button1_Click(object sender, EventArgs e)
        {             
            gameBoard a = new gameBoard();
            a.drawBoard();               
        }      
}

还尝试通过其他两种方式实现这一点:

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

            pictureBox2.ImageLocation = @"E:\My Data\DoCx\CS\3rd Sem\OOP\proj\images\a.png";
            pictureBox2.SizeMode = PictureBoxSizeMode.Zoom;
            pictureBox2.BackColor = Color.Transparent;                               
        }    
 }

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

        private void button1_Click(object sender, EventArgs e)
        {            
            pictureBox2.ImageLocation = @"E:\My Data\DoCx\CS\3rd Sem\OOP\proj\images\a.png";
            pictureBox2.SizeMode = PictureBoxSizeMode.Zoom;   
        }
    }

两者都有效。代码运行时直接加载图片。并且当 button1 以第二种方式按下时。我想知道在用户定义类的方法中定义图片框属性时如何调用它们。

【问题讨论】:

  • 您的内部类 gameBoard 对名为 pictureBox2 的变量一无所知。它看不到这是在容器类中定义的东西。调用时将pictureBox2传递给drawBoard方法

标签: c# winforms


【解决方案1】:

如果您仔细观察,那么您的gameBoard 被定义为Form1 内的嵌套类,并且它还继承自Form 控件,这没有任何意义。您可能希望在外部定义类(可能在单独的文件中)

    public class gameBoard
    {
        private PictureBox _box;
        public gameBoard(PictureBox box)
        {
            _box = box;
        }
        public void drawBoard()
        {
            _box.ImageLocation = @"E:\My Data\DoCx\CS\3rd Sem\OOP\proj\images\a.png";
            _box.SizeMode = PictureBoxSizeMode.Zoom;                      
        }            
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-12
    • 1970-01-01
    • 1970-01-01
    • 2018-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多