我正在编写一个发票应用程序。用户应该能够通过从 ComboBox 中选择产品来向发票的计费部分添加新行,然后根据所选产品填写各种其他字段(价格、描述等)。
我的问题是:当用户添加一个产品时,我希望程序自动为下一个产品生成一个新行。似乎实现这一点的唯一方法是创建一组具有递增名称的新控件,即第一个产品的 Product1、Price1、Desc1,第二个产品的 Product2、Price2、Desc2 等。这可能吗?还是我做错了?
我不得不在某一时刻做这样的事情,我所做的是创建一个客户用户控件,在你的情况下,它将由一个组合框组成,其中填充了加载的产品,以及所有相关的控件,这些控件将被填充组合框的selectedindexchanged
事件。在您要显示此信息的主窗体上放置一个面板并将您的自定义用户控件添加到panels.controls
集合中。
由于所有功能基本上都包含在用户控件本身中,因此您不应该遇到命名问题。
至于在用户进行选择时添加用户控件,您可以使控件变暗withevents
并将自定义事件附加到用户控件并在主窗体中进行处理。由于将在运行时添加控件,因此您需要使用AddHandler
调用附加事件处理程序。
所以要分解它,你需要:
如果您想使用相同的按钮与某个产品进行交互,您可以在用户控件后面的代码中附加一个 ID,并在每次添加新用户控件时进行设置。这并不难,我认为我说得好听,您实际上可以在面板控件集合上运行 linq 并获取满足您指定的任何条件的所有面板,然后从那里做您想做的事情。
至于你的第二个问题,我假设你的用户控件正在从某个地方拉一个虚假的连接字符串。我会尝试追踪发生这种情况的地方并从那里开始。除此之外的任何东西都只是 WAG,并不能真正帮助你。