我们如何在C#Windows应用程序中访问动态创建的控件?

肛门·卡莱姆(Anus Kaleem)

我正在使用3-Tier体系结构设计C#Windows应用程序,基本上,我正在为超市创建管理系统,在该系统中,我已经创建了用于生成BILL的表格。我已经使用FlowLayout面板分别生成4个ComboBox,3个TextBox和2个Numeric UpDown来分别保存Bill值。我提供了添加按钮,通过它我们可以在每次单击按钮时动态创建这些控件,因此,例如,当用户单击添加按钮以添加新项时,将生成带有4个CB,3 TB和2个NUpDowns的新行。提到场景后,我有以下查询:

  1. 如何依次访问每一行中的每个控件?因此,例如,我想访问第5行的第3个ComboBox,如何特别访问它。
  2. 我正在使用3层应用程序体系结构来设计应用程序。我将它们的功能放置在BusinessLogicLayer中,并在按钮事件中在UI中调用了它们。我可以接受这种方法吗?
  3. 我希望每一行中的每个ComboBox都与第一个连接。例如,当用户从中选择任何内容时,第一个指示主要类别,第二个组合框(子类别)应显示与第一个相关的项目,依此类推。我怎样才能做到这一点?

谢谢

保罗·克彻(Paul Kerscher)

我不知道您的应用程序的体系结构,但让我尝试为您提供帮助。假设您具有某种用于业务逻辑的“客户”,“产品”和“订单”对象,则工作流程如下

void ButtonFindCustomer_Click(object sender, EventArgs e)
{
    m_order.Customer = Customer.Find(TextBoxFirst.Text, TextBoxLast.Text, TextBoxCustomerID.Text);
}

void ButtonAddProduct_Click(object sender, Event args)
{
    m_order.AddArticle(Product.Find(TextBoxArticleNumber.Text), NumericUpDownArticleAmount.Value);
}

void ButtonSubmit_Click(object sender, EventArgs e)
{
    m_order.Place();
}

我在这里使用成员变量的前缀只是为了清楚起见,因为缺少上下文。在实际代码中,应避免使用它。此外,我省略了用户是否存在于ButtonFindCustomer_Click中的检查,这种情况也应处理。在ButtonAddProduct_Click中,处理添加产品的情况。再次假设产品存在,因此您必须在此处引入一些错误处理,例如,使用类似

if(Product.Exists(productNumber))
{
    // add to order
}
else
{
    // emit error message
}

实际的事务在ButtonSubmit_Click处理程序中执行。该订单经过验证,然后发送到数据访问层(例如,写入SQL数据库)。再次缺少错误处理,请记住这一点。

要解决您的实际问题:

1)您将必须以某种方式跟踪您创建的控件。如果始终将它们创建在相同的组中,则应考虑使用用户控件,这样可以避免跟踪哪些控件属于同一组。控件可以-例如-包含类别的下拉框,产品的下拉框和金额的数字下拉框。

class ProductSelector : UserControl
{
    ... //add controls to user control

    public event EventHandler CategoryChanged;
    public event EventHandler ProductChanged;
    ...

    public void PopulateCategories(list<string> names, list<string> ids)
    {
        ...
    }

    public void PopulateProducts(list<string> names, list<string ids)
    {
        ...
    }
}

现在,有关产品的任何更改都将发生,您将收到一个事件,可以直接访问您的用户控件和所有必要的数据(如果您在ProductSelector中编写了函数)。如果要依次访问这些控件,则可以从MainForm.Controls中获取类型为ProductSelector的所有控件,也可以创建添加的所有ProductControl的列表。

2)是的,我认为您会接受这种方法的。您必须在某些地方访问BLL的功能,并且UI事件处理程序是一个不错的起点。

3)请看我对1)的回答。

希望我的解释满足您的要求并回答您的问题。随时问我是否可以为您提供进一步的帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在C#Windows窗体应用程序中动态创建网格

来自分类Dev

我们如何在Android中动态更改Android应用程序图标

来自分类Dev

我们如何在Android中动态更改android应用程序图标

来自分类Dev

如何在C#Windows窗体应用程序中创建平滑的形状动画运动?

来自分类Dev

如何将 Google Analytics Dashboard 访问到我们的 C# Web 应用程序或门户中?

来自分类Dev

如何在C#Windows Store应用程序(又名WinRT / Metro)中创建查询字符串?

来自分类Dev

如何在C#Windows应用程序中为HID设备编写驱动程序

来自分类Dev

我们如何在 Sinatra 应用程序中的 Slim 模板中渲染随机部分?

来自分类Dev

我们应该如何在ASP.NET C#应用程序中解析特定的JSON日期格式?

来自分类Dev

我们如何在 React 中创建动态元素

来自分类Dev

我们如何在React应用程序中绘制流程图?

来自分类Dev

如何在我们的Android应用程序中打开图像..?

来自分类Dev

我们如何在ionic 2应用程序中显示多个选项卡?

来自分类Dev

在C#Windows应用程序中保存控件

来自分类Dev

如何在C#Windows窗体应用程序中激活spellCheck?

来自分类Dev

如何在C#Windows Form应用程序的Data gridview中搜索?

来自分类Dev

如何在C#Windows应用程序中增加标签框文字的大小?

来自分类Dev

如何在C#Windows Forms应用程序中运行嵌入式.exe文件?

来自分类Dev

如何在控制台应用程序中的动态创建的窗体窗口中动态创建控件

来自分类Dev

如何在控制台应用程序中的动态创建的窗体窗口中动态创建控件

来自分类Dev

如何在使用C#Windows应用程序创建文本文件时添加文本?

来自分类Dev

在Helm应用程序图表中创建时,我们如何指定依赖项配置值?

来自分类Dev

如何在我们的应用程序中给出zend库路径?(在zend Framework 2.3中)

来自分类Dev

ionic2:如何在侧菜单中管理我们应用程序中的用户状态?

来自分类Dev

如何从我们的流星应用程序访问Google Drive?

来自分类Dev

我们如何使用Windows窗体应用程序中的entityframework更新数据库中的数据?

来自分类Dev

如何返回父表单而不在C#Windows应用程序中创建父类的新实例

来自分类Dev

如何在C#Windows Form应用程序中获取SQL Server中今天插入的数据的记录

来自分类Dev

我们如何在Visual Studio Code中调试ASP.NET MVC Web应用程序?

Related 相关文章

  1. 1

    如何在C#Windows窗体应用程序中动态创建网格

  2. 2

    我们如何在Android中动态更改Android应用程序图标

  3. 3

    我们如何在Android中动态更改android应用程序图标

  4. 4

    如何在C#Windows窗体应用程序中创建平滑的形状动画运动?

  5. 5

    如何将 Google Analytics Dashboard 访问到我们的 C# Web 应用程序或门户中?

  6. 6

    如何在C#Windows Store应用程序(又名WinRT / Metro)中创建查询字符串?

  7. 7

    如何在C#Windows应用程序中为HID设备编写驱动程序

  8. 8

    我们如何在 Sinatra 应用程序中的 Slim 模板中渲染随机部分?

  9. 9

    我们应该如何在ASP.NET C#应用程序中解析特定的JSON日期格式?

  10. 10

    我们如何在 React 中创建动态元素

  11. 11

    我们如何在React应用程序中绘制流程图?

  12. 12

    如何在我们的Android应用程序中打开图像..?

  13. 13

    我们如何在ionic 2应用程序中显示多个选项卡?

  14. 14

    在C#Windows应用程序中保存控件

  15. 15

    如何在C#Windows窗体应用程序中激活spellCheck?

  16. 16

    如何在C#Windows Form应用程序的Data gridview中搜索?

  17. 17

    如何在C#Windows应用程序中增加标签框文字的大小?

  18. 18

    如何在C#Windows Forms应用程序中运行嵌入式.exe文件?

  19. 19

    如何在控制台应用程序中的动态创建的窗体窗口中动态创建控件

  20. 20

    如何在控制台应用程序中的动态创建的窗体窗口中动态创建控件

  21. 21

    如何在使用C#Windows应用程序创建文本文件时添加文本?

  22. 22

    在Helm应用程序图表中创建时,我们如何指定依赖项配置值?

  23. 23

    如何在我们的应用程序中给出zend库路径?(在zend Framework 2.3中)

  24. 24

    ionic2:如何在侧菜单中管理我们应用程序中的用户状态?

  25. 25

    如何从我们的流星应用程序访问Google Drive?

  26. 26

    我们如何使用Windows窗体应用程序中的entityframework更新数据库中的数据?

  27. 27

    如何返回父表单而不在C#Windows应用程序中创建父类的新实例

  28. 28

    如何在C#Windows Form应用程序中获取SQL Server中今天插入的数据的记录

  29. 29

    我们如何在Visual Studio Code中调试ASP.NET MVC Web应用程序?

热门标签

归档