如何重新访问之前在子控件中声明的用户控件?

雷玛(Raymart)Calinao AsthreA

我想从我的主窗体中重新访问一些子用户控件。我想访问我从WatchListUC声明的对象“ watch” watch = new WatchListUC();

从我的主我已经在主窗体的面板上声明了此用户控件

 private void MyList_Load(object sender, EventArgs e)
    {
        LogInScreen screen = new LogInScreen();
        panel2.Controls.Clear();
        panel2.Controls.Add(screen);
        loadDB();
        grid.ContextMenuStrip = OpenDetails;

    }


然后,我创建了一个登录名,然后就可以调用WatchListUC watch = new WatchListUC();了。我稍后想回想一下

在登录屏幕上,这是代码

private void LogIn_Click(object sender, EventArgs e)
    {
        SuspendLayout();
        try
        {
            MySqlConnection conn = new MySqlConnection(myConnection);
            conn.Open();
            MySqlCommand command = new MySqlCommand("SELECT * FROM maindatabase.users where user=?parameter1 and pass=?parameter2;", conn);
            command.Parameters.AddWithValue("?parameter1", User.Text);
            command.Parameters.AddWithValue("?parameter2", Pass.Text);
            MySqlDataReader reader = command.ExecuteReader();

            int ctr = 0;
            while (reader.Read())
            {
                ctr++;
               // controlnum = reader["idnum"].ToString();
                MyList.AccountControlNum = int.Parse(reader["idnum"].ToString());
               // MessageBox.Show(MyList.AccountControlNum.ToString());
            }
            if (ctr == 1)
            {
                this.Parent.Controls.Remove(this);
                MyList my = MyList.ActiveForm as MyList;
                UserAccount acc = new UserAccount();
                my.panel2.Controls.Add(acc);
                my.label1.Text = reader["user"].ToString()+" 'List";
                WatchListUC watch = new WatchListUC();
                my.panel3.Controls.Clear();
                my.panel3.Controls.Add(watch);
                FinishListUC finish = new FinishListUC();
                my.panel4.Controls.Clear();
                my.panel4.Controls.Add(finish);
              //  MessageBox.Show("Success!");
            }
            else
            {
                MessageBox.Show("Invalid Username or Password!");
            }

            conn.Close();
            ResumeLayout();
        }
        catch (Exception ex)
        {
            MessageBox.Show("error" + ex);
            ResumeLayout();
        }
        ResumeLayout();
    }


现在在我的主窗体上,如何在“ insertWL()”方法之后在这里重新访问?

void ConfirmedWL()
    {
        SuspendLayout();
        try
        {
            MySqlConnection conn = new MySqlConnection(myConnection);
            conn.Open();
            MySqlCommand command = new MySqlCommand("SELECT * FROM maindatabase.watchlist where ControlNum=?CN and idnum=?ID;", conn);
            command.Parameters.AddWithValue("?CN", int.Parse(a.ToString()));
            command.Parameters.AddWithValue("?ID", MyList.AccountControlNum);
            MySqlDataReader reader = command.ExecuteReader();

            int ctr = 0;
            while (reader.Read())
            {
                ctr++;

            }
            if (ctr == 1)
            {
                MessageBox.Show("Already Existed!");
            }
            else
            {
                insertWL();                    
                //WatchListUC watch1 = panel3.Controls.Find("watch", true).DefaultIfEmpty() as WatchListUC;
                //watch1.dvgRefresh();

              //here i want to recall the watch so i can call the method dvgRefresh();
            }


            conn.Close();
            ResumeLayout();
        }
        catch { }
    }<br>

我希望有人可以帮助我,这是我的完整代码和屏幕截图http://www.mediafire.com/download/1l18e6v8158mi16/Help_please.rar

拉里

UserControl 是视觉对象,可以像每个对象一样使用。

这意味着您可以将它们的引用存储在最适合您的范围内的任何变量中。

在您的示例中,我将watch在“表单”级别进行定义

WatchListUC watch;

然后,在LogIn_Click事件方法中,这样做没有错:

watch = new WatchListUC();
my.panel3.Controls.Clear();
my.panel3.Controls.Add(watch);

最后,在ConfirmedWL方法中,只需使用watch您拥有实例即可。

...
else
{
    insertWL();                    
    watch.dvgRefresh();
}

这种方法的缺点是您必须注意控件的生命周期:

  • watchnull如果没有实例化,这可能会导致NullReferenceException如果您尝试使用它没有把新的控制里面。
  • 另外,记住.Dispose()在完成操作后立即调用您即时创建的控件。如果您计划WatchListUC在应用程序生命周期中仅拥有一个实例,则不需要这样做。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

XAML:访问用户控件内部的控件

来自分类Dev

如何从父aspx页访问子用户控件中的控件

来自分类Dev

如何访问用户以父形式定义控件,内部控件

来自分类Dev

如何从类中设置用户控件的值

来自分类Dev

如何从母版页访问用户控件中的控件?

来自分类Dev

如何重新访问之前在子控件中声明的用户控件?

来自分类Dev

从用户控件中访问MainWindow中的用户控件名称

来自分类Dev

如何在用户控件WinForm中访问托管表单上的控件

来自分类Dev

在C#中:如何创建包含控件的元组列表和有权访问此控件的用户列表?

来自分类Dev

如何访问DependencyService中的本机控件?

来自分类Dev

如何访问控件?

来自分类Dev

访问控件不是XAML用户控件中的属性

来自分类Dev

如何访问动态创建的用户控件的属性?

来自分类Dev

如何从用户控件访问容器的事件?

来自分类Dev

如何在表格布局的控件中访问控件

来自分类Dev

动态创建的用户控件中的访问方法?

来自分类Dev

如何访问用户控件的项目

来自分类Dev

如何获取对webusercontrol中的(子)控件的访问权限

来自分类Dev

如何在课程中访问网页控件

来自分类Dev

如何访问用户以父形式定义控件,内部控件

来自分类Dev

如何访问UpdatePanel中的“读取值”控件的控件?

来自分类Dev

如何从Sitecore中的另一个子布局访问子布局控件?

来自分类Dev

用户控件背景隐藏子控件

来自分类Dev

如何从用户控件访问默认设置?

来自分类Dev

从用户控件中访问MainWindow中的用户控件名称

来自分类Dev

用户控件中的动态控件

来自分类Dev

如何访问DataTemplate的控件

来自分类Dev

如何从控件访问MainWindow中可用的资源?

来自分类Dev

如何访问 ListView EditItemTemplate 中的控件

Related 相关文章

  1. 1

    XAML:访问用户控件内部的控件

  2. 2

    如何从父aspx页访问子用户控件中的控件

  3. 3

    如何访问用户以父形式定义控件,内部控件

  4. 4

    如何从类中设置用户控件的值

  5. 5

    如何从母版页访问用户控件中的控件?

  6. 6

    如何重新访问之前在子控件中声明的用户控件?

  7. 7

    从用户控件中访问MainWindow中的用户控件名称

  8. 8

    如何在用户控件WinForm中访问托管表单上的控件

  9. 9

    在C#中:如何创建包含控件的元组列表和有权访问此控件的用户列表?

  10. 10

    如何访问DependencyService中的本机控件?

  11. 11

    如何访问控件?

  12. 12

    访问控件不是XAML用户控件中的属性

  13. 13

    如何访问动态创建的用户控件的属性?

  14. 14

    如何从用户控件访问容器的事件?

  15. 15

    如何在表格布局的控件中访问控件

  16. 16

    动态创建的用户控件中的访问方法?

  17. 17

    如何访问用户控件的项目

  18. 18

    如何获取对webusercontrol中的(子)控件的访问权限

  19. 19

    如何在课程中访问网页控件

  20. 20

    如何访问用户以父形式定义控件,内部控件

  21. 21

    如何访问UpdatePanel中的“读取值”控件的控件?

  22. 22

    如何从Sitecore中的另一个子布局访问子布局控件?

  23. 23

    用户控件背景隐藏子控件

  24. 24

    如何从用户控件访问默认设置?

  25. 25

    从用户控件中访问MainWindow中的用户控件名称

  26. 26

    用户控件中的动态控件

  27. 27

    如何访问DataTemplate的控件

  28. 28

    如何从控件访问MainWindow中可用的资源?

  29. 29

    如何访问 ListView EditItemTemplate 中的控件

热门标签

归档