用户控件BringToFront()事件?

时间:2018-06-26 05:41:18

标签: c# events user-controls

我想刷新用户控件上的datagridview,我用BringToFront()调用用户控件;在我的主窗体上执行操作,是否有任何事件,以便将User控件设置为最前面时可以刷新datagridview?像这样:

自定义控件:(具有datagridview:dgvCustomers)

namespace Healthcare
{
    public partial class Overview : UserControl
    {
        public Overview()
        {
            InitializeComponent();
        }

        public void RefreshGrid()
        {
            using (DatabaseContext db = new DatabaseContext())
            {
                customersBindingSource.DataSource = db.Customers.ToList();
            }
        }

        private void Overview_Load(object sender, EventArgs e)
        {
            RefreshGrid();
        }
    }
}

主要形式:

private void btnOverview_Click(object sender, EventArgs e)
{
    ccOverview.BringToFront();
    txtTitle.Text = "Healthcare - Overview";
    RefreshGrid(); // Does not exist in the current context
}

2 个答案:

答案 0 :(得分:2)

将这两种方法组合在一起似乎更容易。它简单明了,易于维护,您无需为了进行魔术而沉迷于其他事件

示例

public void RefreshMyAwesomeGrid()
{
    using (DatabaseContext db = new DatabaseContext())
    {
        customersBindingSource.DataSource = db.Customers.ToList();
    }
}

...

MyUserControl.BringToFront();
RefreshMyAwesomeGrid();

更新

  

问题是我无法从主表单访问数据网格   我的主要形式是我有一个按钮,一旦按下该按钮,它将带来   用户控件位于最前面,所以我必须将datagridview刷新   用户控件中的操作,但我想使用主表单来触发它   行动

假设您的DataGrid位于userControl中...不幸的是BringToFront不能被覆盖。但是,您有两种选择。

最简单的方法是将公共方法放在您的UserControlRefreshMyAwesomeGrid上。当您致电BringToFront时致电RefreshMyAwesomeGrid

或者,或者只是让您的OwnBringToFrontPlusRefresh <-看起来有些混乱

或者您可以使用解耦消息,具体取决于您是否使用任何框架

更新2

只需深入您的用户控件

private void btnOverview_Click(object sender, EventArgs e)
{
    ccOverview.BringToFront();
    txtTitle.Text = "Healthcare - Overview";
    ccOverview.RefreshGrid(); // exists now
}

答案 1 :(得分:0)

class Form1 : Form
{
    button1_MouseClick()
    {
        ucr1.BringToFront();
        ucr1.Focus(); // 포커스를 해줘야만 Enter 이벤트가 발동한다. 중요하다.

    }
}

class ucr1 : Usercontrol
{
    private void ucr1_Enter(object sender, eventargs e)
    {
        //do something
    }
}