如何将表单作为参数传递
本文关键字:参数传递 表单 | 更新日期: 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