【发布时间】:2012-06-10 12:46:42
【问题描述】:
我正在创建一个实用程序,该实用程序需要足够灵活以使用用户输入的不同类型的数据。不仅仅是不同的数据,因为一个用户可能会输入“Rory Gallagher”另一个“Merle Travis”另一个“Louis Jordan”和另一个“Gatemouth Brown”。
更像是一个用户输入“Rory Gallagher”另一个“42”和另一个同时输入日期(例如 9/8/1956)和 ID 值(例如“00034872184”)。
所以问题出在 GUI 上:我如何“换掉”提示他们输入的表单部分?创建几个 99% 相同的实用程序似乎有点矫枉过正。但是应用程序的某些“版本”只需要一个“输入一些值”标签和一个文本框,而另一个可能需要提示它们输入两条甚至更多条信息。
我不想在表单上有一个“输入数据”按钮来调用另一个表单,因为当用户只需要输入一个信息时,这看起来很奇怪。
我认为策略模式可能会在我的未来出现,但 GUI 部分仍然是个难题。如果我们使用 WPF 会更容易,但我们不是。我想我仍然可以留出足够大的表单部分来合并“最大”场景,但这是最好的方法吗?
更新
我尝试了以下建议:
我在表单中添加了一个面板,并通过 Add | 创建了一个用户控件。 UserControl 并尝试了这个:
panel1.Controls.Add(UserControl1);
UserControl1.Dock = DockStyle.Fill;
...但是遭遇了史诗般的失败(“'PlatypiRUs.UserControl1' 是一个'类型',但用作'变量'”和“非静态字段、方法或属性需要对象引用'System.Windows.Forms.Control.Dock.get'")
再次更新
现在有了这个史诗般的成功:
UserControl1 usr1 = new UserControl1();
panel1.Controls.Add(usr1);
usr1.Dock = DockStyle.Fill;
【问题讨论】:
-
在你的代码中,你需要像
UserControl1 usr1 = new UserControl1();这样的东西,然后就是panel1.Controls.Add(usr1); -
啊,这是有道理的——而且有效;谢谢!
标签: c# winforms design-patterns user-interface