WinForms在窗体之间传递数据我有一个名为questions的表,它的字段名称是qcategory。在WFA中,我有一个ToolStripMenu,其中有一个名为Simulation的类别和一个名为B的子类别。因此,我想创建一个mysqlSELECT,其中仅选择值等于子类别值的行。(表中的列qcategory具有值B)。这是字符串:staticstringdataA="SELECTDISTINCT*FROMquestionsorderbyrand()limit1";唯一的问题是我有2张桌子。一张是菜单,一张是我必须做出的选择。您应该尝试拆分UI代码和数据库代码。这称为分层(MVVM、MVC、MVP等),但您不必这样做!有几种方法:1)创建一个类,其中两种形式都可以引用和执行数据库逻辑。(这将是目前最干净的方法)2)在带有菜单的表单中创建一个事件,并以另一种形式对其做出反应3)您的菜单表单包含对另一种表单的引用,并在其上执行一个方法选定的子项目。在代码1publicstaticclassSqlClass{publicstaticvoidExecuteQuery(stringmenuItem){//执行查询}}Form1//menuchanged...SqlClass.ExecuteQuery(menuItem)2Form1:publiceventEventHandlerMenuItemChanged;//菜单改变了...if(this.MenuItemChanged!=null)this.MenuItemChanged(this,menuitem)Form2:publicForm2(Form1otherForm){InitializeComponent();_otherForm.MenuItemChange+=//...处理你的sql代码}3privatereadonlyForm2_otherForm;publicForm1(Form2otherForm){InitializeComponent();_otherForm=otherForm;}//菜单改变了...otherForm.ExecuteQuery(menuitem);定义将与您的数据库交互的方法/事件处理程序。要理解该解决方案,您需要更高层次的视角——您在Form(一个类)背后的代码中获取信息,并且您希望在其他地方使用该信息。通常,您需要提供包含您感兴趣的信息并告诉您该信息何时发生变化(事件)的表,或者提供一个信息源来告诉您感兴趣的每个目的地(调用方法)。然后信息源持有对消费者的引用。这两个概念只是传达(和参考)相同的变化方向。备选方案(选项1)是将信息目标移动到其他地方(例如在静态类中)并在那里使用它。传递信息的机制几乎相同(通过参数化方法调用),只是将UI-colde(Form)(SQL查询执行)封装在了数据库代码中。以上就是C#学习教程的全部内容:WinForms传递Forms之间的数据共享,如果对你有用,还需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
