在我当前的项目中,我正在制作一个便签类型的应用程序,用户可以在其中打开同一个表单的多个实例。但是,我想知道在 C# 中是否有一种方法可以创建 form1 的新实例,但是将新表单的标题/文本/标题设置为 form2。
如果这是可以实现的,我想推动如何对我的应用程序的那部分进行编码的正确方向。
谢谢大家。
- 编辑 -
我意识到我忘了添加一些重要的东西:
我需要能够计算当前打开的实例数量。从那里我将在表单文本中添加 +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
等等。可能有更好的方法来做到这一点,但我不确定。
使用静态字段来记录已打开的实例数量,并使用它来设置表单的标题。
这是一个草图;如果您想要不同的行为,您可以跳过 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);
}
}