我需要从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”时,我的意思是表格!
答案 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();