0

在我当前的项目中,我正在制作一个便签类型的应用程序,用户可以在其中打开同一个表单的多个实例。但是,我想知道在 C# 中是否有一种方法可以创建 form1 的新实例,但是将新表单的标题/文本/标题设置为 form2。

如果这是可以实现的,我想推动如何对我的应用程序的那部分进行编码的正确方向。

谢谢大家。

- 编辑 -

我意识到我忘了添加一些重要的东西:

我需要能够计算当前打开的实例数量。从那里我将在表单文本中添加 +1。

4

2 回答 2

1

尝试从类中访问表单属性:

MyForm newForm = new MyForm();
newForm.Show();
newForm.Text = "Form2";

或者从当前表单调用一个方法来设置文本:

// In MyForm
public void SetTitle(string text)
{
    this.Text = text;
}

// Call the Method
MyForm newForm = new MyForm();
newForm.Show();
newForm.SetTitle("Form2");

希望这可以帮助!

要检查打开的表单数量,您可以尝试以下操作:

// In MyForm
private int counter = 1;
public void Counter(int count)
{
    counter = count;
}
// Example
MyForm newForm = new MyForm();
counter++;
newForm.Counter(counter);

使用起来可能会令人困惑,但假设您有一个按钮可以打开相同表单的新实例。由于您一开始就打开了一个表格counter = 1。每次单击按钮时,它都会发送counter++或发送2到表单。如果您打开另一个表单,它将发送counter = 3等等。可能有更好的方法来做到这一点,但我不确定。

于 2012-07-20T05:53:45.233 回答
0

使用静态字段来记录已打开的实例数量,并使用它来设置表单的标题。

这是一个草图;如果您想要不同的行为,您可以跳过 OnFormClosed 覆盖:

public class TheFormClass : Form
{
    private static int _openCount = 0;

    protected override void OnLoad(EventArgs e)
    {
        _openCount++;
        base.OnLoad(e);
        this.Text = "Form" + _openCount;
    }

    protected override void OnFormClosed(FormClosedEventArgs e)
    {
        _openCount--;
        base.OnFormClosed(e);
    }
}
于 2012-07-20T06:12:34.603 回答