【问题标题】:Create instances of objects at the push of a button按下按钮即可创建对象实例
【发布时间】:2018-08-18 16:28:12
【问题描述】:

当按下右侧面板上的按钮时,我希望在蓝色面板中生成一个图像实例。我熟悉 OOP,但对 Windows 窗体很陌生,因此不确定如何创建对象并以这种方式实例化它。我将如何创建一个父类来保存这样的对象,以便在 Windows 窗体 c# 中按下按钮时生成此类对象?

【问题讨论】:

  • 什么样的对象?
  • 您可以使用Activator.CreateInstance 创建对象类型的副本,然后使用control.GetType().GetProperties(...) 复制所有属性并将它们设置在新实例上。但是,它也应该有事件吗?我认为您最好的选择是拥有一个带有构造函数的自定义类,该构造函数可以采用一个或多个参数,允许生成具有预定义的所需属性/事件的新对象。
  • 我在下面添加了一个示例(答案),它使用 DockStyle.Fill 来显示图像并填充面板。如果要在面板中添加其他控件(对象),则需要使用不同的设置,例如“上、左、下等”,或者根本不使用。

标签: c# winforms class oop instance


【解决方案1】:

您可以使用此代码:

class Gates
{
    public Button BtnNOT()
    {
        Button btnNOT = new Button();
        btnNOT.Width = 100;
        btnNOT.Height = 50;
        btnNOT.Text = "some text...";
        btnNOT.Image = some Image...;
        // And what you want

        return btnNOT;
    }

    public Button BtnAND() { ... }
    public Button BtnOR() { ... }
    // And other gates...
}

然后当您单击右侧面板中的按钮时,此代码运行:

Gates gates = new Gates();
bluePanel.Controls.Add(gates.BtnNOT());

希望对你有帮助

【讨论】:

    【解决方案2】:

    在构造函数中

        this.button1.Click += new System.EventHandler(this.button1_Click);
    

    在点击事件中

        private void button1_Click(object sender, EventArgs e)
        {
            Control lastPanelContol = null;
            if (panel1.Controls.Count > 0)
                lastPanelContol = panel1.Controls[panel1.Controls.Count - 1];
    
            var newButton = new Button
            {
                Name = "btnDynamic" + panel1.Controls.Count,
                Text = "btnDynamic" + panel1.Controls.Count,
                Left = 20,
                Width = 100,
                Top = lastPanelContol == null ? 20 : lastPanelContol.Top + lastPanelContol.Height + 20
            };
    
            panel1.Controls.Add(newButton);
        }
    

    【讨论】:

      【解决方案3】:

      如果您只想显示系统中的图像,请在单击按钮时在蓝色面板中显示。

      此示例创建一个图像名称字符串数组,并允许您以图像名称为目标,以便在您单击按钮时在蓝色面板中显示图像。

      假设您的蓝色面板名称为“panel1”,包含按钮的面板为“panel2”,而您的按钮名称为“button1”。

      当你点击按钮时,它会显示你在 pics[] 数组中设置的图像。

          private void button1_Click(object sender, EventArgs e)
          {
              ShowMyImage();
          }
      
          private void ShowMyImage()
          {
              string[] pics = new string[2];
      
              pics[0] = "E:\\images\\image0.jpg";
              pics[1] = "E:\\images\\image1.jpg";
      
              var picbox = new PictureBox();
              picbox.Image = Bitmap.FromFile(@pics[0]);
              picbox.Dock = DockStyle.Fill;
              panel1.Controls.Add(picbox);
      
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-16
        相关资源
        最近更新 更多