如何将表单作为参数传递

本文关键字:参数传递 表单 | 更新日期: 2023-09-27 18:02:08

首先我知道这个问题已经有了答案,但是大多数的解决方案似乎都很复杂。

:

我有一个叫做frm1的表单。我想把它作为参数

传递
myfunc(ref frm1)

我就会做

private void myfunc(ref Form frm1)
It says : frm1 is a type but is used as a variable.

我这样做的原因是因为根据选择,我将表单传递给两个函数之一,这两个函数填充它的方式不同。

问题:

然而,我不能传递参数我的形式。然而,我可以用同样的方式传递其他控件,如按钮。我怎么能做到这一点简单的形式,没有接口等…

如何将表单作为参数传递

您传递参数的方式有问题。你确定传递的是实例而不是类型吗?

下面是一个工作示例。

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        this.Name = "form";
        Form f = this;
        doSomethingWithForm(f);
    }
    private void doSomethingWithForm(Form f)
    {
        Console.WriteLine(f.Name);
    }
}

我创建了一个函数。我想这对你有帮助。我在实践中使用它。

>函数如下:

public void showForm(Form _form, Form _main) {
if (_main != null)
{
if (_main.ActiveMdiChild != null)
{
    _main.ActiveMdiChild.Close();
}
_form.MdiParent = _main;
_form.Activate();
_form.Show();
}
else
{
_form.Activate();
_form.ShowDialog();
}

->如何使用:

objLib.showForm(new frmMain(), null);

objLib.showForm(new frmNewspaper(), this);

谢谢

我将补充kenjara的答案。

// For example: change color of the form - from some other method 
private void Form_Load(object sender, EventArgs e)
{
    ChS = new ChangeSomething();
    ChS.ChangeBackColor(this);
}

public class ChangeSomething
{
    public void ChangeBackColor(Form form)
    {
        form.BackColor = System.Drawing.Color.Black;
        return;
    }
}
   

已测试VS2022/net4.8/Windows Forms