【问题标题】:c# calling methods on panel?c# 在面板上调用方法?
【发布时间】:2012-06-02 03:57:52
【问题描述】:

我创建了一些新方法:

void newMethod(int x, int y)
{
    Button B = new Button();
    B.Size = new Size(100, 30);
    B.Location = new Point(x, y);
    B.Text = "Text";
    Controls.Add(B);
}

现在我在其他方法中创建了一个新面板:

void Something()
{
    Panel P = new Panel();
    P.Size = new Size(300, 300);
    P.Location = new Point(0, 0);
    P.BackColor = new Color(Blue);
    Controls.Add(P);
}

如何将创建按钮的第一个方法添加到第二个方法的面板中?

【问题讨论】:

    标签: c# forms methods panel


    【解决方案1】:

    添加父控件作为参数:

    private void AddButton(int x, int y, Control parent)
    {
        Button button = new Button
            {
                Size = new Size(100, 30),
                Location = new Point(x, y),
                Text = "Text"
            };
    
        parent.Controls.Add(button);
    }
    

    然后:

    void Something()
    {
        Panel P = new Panel();
        P.Size = new Size(300, 300);
        P.Location = new Point(0, 0);
        P.BackColor = new Color(Blue);
    
        this.AddButton(100, 100, P);
    }
    

    【讨论】:

      【解决方案2】:

      编辑您的第一种方法

      void newMethod(int x, int y, Panel p)
      {
          Button B = new Button();
          B.Size = new Size(100, 30);
          B.Location = new Point(x, y);
          B.Text = "Text";
          p.Controls.Add(B);
      }
      

      【讨论】:

      • 这不是一个好主意,因为我不仅将它用于该面板,还用于表单本身和其他面板。
      【解决方案3】:

      公开地给出这个声明。那是在类内,不在 NewMethod 中。

      Panel P = new Panel();
      

      然后写这段代码

      this.P.controls.Add(B);
      

      插入

      Controls.Add(B);
      

      【讨论】:

      • 注意属性Controls和方法Add以大写字母开头
      • 感谢您的尝试,但现在这不是最适合我的需要 :)
      猜你喜欢
      • 2012-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-17
      • 2011-05-18
      • 2013-03-07
      • 1970-01-01
      • 2014-05-18
      相关资源
      最近更新 更多