加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

从主窗口网格WPF中的用户控件打开用户控件

发布时间:2020-12-17 07:10:56 所属栏目:百科 来源:网络整理
导读:也许首先我会讲述我的申请. 例如,当员工登录我的应用程序时,他将加载“员工菜单”: Dim Empl As New EmployeeMainGrid.Children.Add(Empl)Grid.SetRow(Empl,1) 这是来自Window_Loaded事件.菜单是用户控制,我有几个按钮可以打开和操作另一个用户控件.当我按
也许首先我会讲述我的申请.
例如,当员工登录我的应用程序时,他将加载“员工菜单”:

Dim Empl As New Employee
MainGrid.Children.Add(Empl)
Grid.SetRow(Empl,1)

这是来自Window_Loaded事件.菜单是用户控制,我有几个按钮可以打开和操作另一个用户控件.当我按下例如按钮“问题”时:

Public Class Employee
    Dim mw As New MainWindow
    Private Sub btnQuestionAdd_Click(sender As System.Object,e As System.Windows.RoutedEventArgs) Handles btnQuestionAdd.Click
        Dim Que As New QuestionAdd
        mw.MainGrid.Children.Add(Que)
        Grid.SetRow(Que,2)
        Grid.SetColumn(Que,1)
    End Sub
End Class

我不知道为什么在button_click后没有加载…..
是否很难从其他控件导航主窗口网格?

解决方法

这只是猜测,因为你没有提供太多信息,但我注意到以下问题可能是罪魁祸首.

在您的第一个代码段中,您似乎是从MainForm创建员工:

Dim Empl As New Employee
MainGrid.Children.Add(Empl)
Grid.SetRow(Empl,1)

您的以下评论似乎证实了这一假设:

This is from Window_Loaded event. Menu is User Control,and there I have few buttons to open and operate another user controls. When I press for example button “Question”

然而,在您的Employee类中,您正在创建MainWindow的全新实例,然后向其添加数据:

Public Class Employee
    Dim mw As New MainWindow
    Private Sub btnQuestionAdd_Click(sender As System.Object,1)
    End Sub
End Class

如果这个观察是正确的,那么我认为你需要回到书本并理解classes和instances的概念.

您基本上创建了第二个表单(由于您从未明确显示它而隐藏),然后修改第二个表单而不是原始表单.要证明这一假设,请尝试添加以下代码行:

Public Class Employee
    Dim mw As New MainWindow
    Private Sub btnQuestionAdd_Click(sender As System.Object,1)
        mw.Show() ' <---
    End Sub
End Class

您可能会看到弹出第二个表单,其中包含您在第一个表单上所期望的所有更改.

至于如何解决这个问题,最简单的方法是在初始化程序中添加一个参数(“Sub New”),它接受MainForm作为值.然后,您可以将值分配给字段或属性(可能只是您的mw字段)并继续您的快乐方式.不过,这会让你头疼不已,所以可能是开始学习更多关于software architecture的好时机,特别是separation of concerns的概念.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读