gpt4 book ai didi

c# - 基于int打开表单

转载 作者:太空狗 更新时间:2023-10-29 23:31:04 24 4
gpt4 key购买 nike

我刚刚开始 Project Euler,我已经遇到了我的第一个问题。我想为每个欧拉问题都有一个单独的表格,但我不知道如何以一种好的方式打开表格。我想要做的是使用变量 problemNumber 打开一个表单。例如,如果我将 problemNumber 设置为 54,然后按一个按钮,它应该会打开 form54。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
int problemNumber = int.Parse(numericUpDown1.Text);


}
}
}

我知道如何打开特定的表单,例如 form2。

form2 f2 = new form2();
f2.Show();

这会打开 form2,但如上所述我想打开 form+problemNumber。

谢谢!

最佳答案

一种可能性是创建一个静态类,该类具有一个带有 switch case 的静态方法并返回一个 Form 对象。在方法中,您创建关于指定数字的新表单对象:

public static class FormStarter
{
public static Form OpenForm(int formNumber)
{
Form form = null;
switch (formNumber)
{
case 1: form = new Form1(); break;
case 2: form = new Form2(); break;
//case 3: form = new Form3(); break;
// ...
default: throw new ArgumentException();
}

return form;
}
}

然后你可以像这样使用这个类:

var f = FormStarter.OpenForm(2);
f.ShowDialog(); // Form2 is started!

有了新表单后,您只需在一个方法中添加实例的创建 - OpenForm

没有静态类的另一种可能的解决方案是一个Dictionary 对象来保存数字和表单实例,如下所示:

Dictionary<int, Form> forms = new Dictionary<int, Form>();
forms.Add(1, new Form1());
forms.Add(2, new Form2());
forms[2].ShowDialog(); // Form2 is started!

如果只想在字典中引用表单的类型,只在需要时才创建实例,则将字典的值改为Type类型,并将对应的表单放入它:

Dictionary<int, Type> forms = new Dictionary<int, Type>();
forms.Add(1, typeof(Form1));
forms.Add(2, typeof(Form2));
((Form)Activator.CreateInstance(forms[2])).ShowDialog(); // Form2 is started!

关于c# - 基于int打开表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24983592/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com