从userControl调用Main函数

时间:2019-12-07 14:23:40

标签: c# function

我需要从userControl的Main调用一个函数。 我试图将我的函数置于无法正常工作的静态状态,因为在此函数中,我访问了Main窗体的控件,因此出现错误:

  

方法或非静态字段的属性需要对象引用

这是我的代码: 调用函数:

        private void label_projetName_Click(object sender, EventArgs e)
    {
        if(!isClick)
            isClick = true;
        else
            isClick = false;

        // Affiche / Enlève les sous projet d'un projet         
        Main.ShowSP(isClick, projet);
    }

我想打电话给他的地方:

Axes.axhspan(self, ymin, ymax, xmin, xmax, facecolor="color")

谢谢你有解决办法

编辑:

我不知道这是否是一个错误,但是当我说“ Main”时,我的意思是表格!

2 个答案:

答案 0 :(得分:1)

要进行不同形式的通信,您需要在子Form中声明一个事件,以便父可以获取数据。

有关事件用法的官方文档,可以找到here

public event EventHandler<EventArgs> OnClick;

然后在您的父控件中

public void ShowSP(object sender, ThresholdReachedEventArgs e) {
      // Access from e.isClick and e.projet
}

// Assign this whenever the child control is available.
childControl.OnClick += ShowSP;

再次在子控件中

private void label_projetName_Click(object sender, EventArgs e)
{
    if(!isClick)
        isClick = true;
    else
        isClick = false;

    // Affiche / Enlève les sous projet d'un projet  
    ThresholdReachedEventArgs args = new ThresholdReachedEventArgs();
    args.isClick= isClick;
    args.projet = projet;       
    OnClick(null, args);
}

答案 1 :(得分:0)

只需将父表单中的方法设为公开,并在UserControl中创建主表单类型的属性即可:

public Main MainForm { get; set;}  // add this to your user control (imagining that Main is Form class)

然后您可以在UserControl中访问它,例如:

MainForm.PulicMethodYouWantToCall();