2012-04-25 280 views
0

我编码的发票应用程序增加控制的名字。用户应该能够通过从ComboBox中选择一个产品来添加一条新行到发票的开票部分,然后根据所选产品填写各种其他字段(价格,描述等)。VB.NET/Visual Studio 2010中,在运行时

我的问题是这样的:当用户添加了一个产品,我想程序自动生成下一个产品一个新的生产线。这似乎是唯一的方法来完成这将创建一个新的控制与增加名称,即产品1,Price1,Desc1为第一个产品,Product2,Price2,Desc2为第二个产品,等等这是可能的,还是我所有的错误?

回答

1

我曾在一个点做这样的事和我所做的就是创建的是定制用户控件,在你的情况下,将包括一个组合框,一个充满负载的产品,以及所有相关的控制,将在组合框的selectedindexchanged事件中填写。在您想要显示此信息的主窗体上放置一个面板并将您的自定义用户控件添加到panels.controls集合中。

,因为所有的功能基本被包含在用户控件本身,你不应该遇到命名问题。

至于在用户进行选择时添加用户控件,您可以调暗控件withevents并将自定义事件附加到用户控件并在主窗体中处理它。由于控件将在运行时添加,因此您需要使用AddHandler调用来附加事件处理程序。

因此,要打破它,你将需要:

  1. 与所有你想要为每个产品的控件自定义用户的控制,并在代码中的ID背后
  2. 事件上的自定义用户控件告诉主窗体组合框有一个选定的值
  3. 主窗体上用于保存自定义用户控件的面板
  4. 当在组合框。

如果要使用同一个按钮与某个产品进行交互,可以在用户控件背后的代码中附加一个ID,并设置每次添加新的用户控件时。这并不像我觉得我听起来那么困难,你实际上可以在面板控制集合上运行linq,并获得满足你指定条件的所有面板,然后从那里做你想做的事。

关于你的第二个问题,我会假设你的用户控件从什么地方拉一个假的连接字符串。我会尽力追踪发生的事情,并从那里开始。除此之外的任何事情都只是一个WAG,并不能真正帮助你。

+0

大,实际上是有道理的!我想我对控件如何与表单有关的误解。我没有意识到,一旦你添加一个控件到窗体的控件集合中,你可以覆盖它最初存储的变量而不用替换旧的控件。如果这是有道理的。谢谢! – 2012-04-25 18:43:26

+0

它对我来说至少是这样。但是,你可以在for循环中创建一个变量并将其添加到外部集合中,并且循环结束时,所有原始控件都将消失,但仍然可以在控制集合中引用它们。在像你这样的情况下非常有帮助。 – 2012-04-25 18:46:29

+0

这一点知识肯定会在未来帮助我很多。至于第二个问题,我已经搜索了它试图找到数据库的目录,但无济于事。连接字符串位置设置为“\ DatabaseName.mdf”,这使我认为它正在查找控制的.dll所在的数据库。 – 2012-04-25 18:47:54

相关问题