C#-从另一个窗体调用函数

C#-从另一个窗体调用函数,c#,oop,tray,C#,Oop,Tray,我需要另一张表格的通知单。 ControlPanel.cs(默认格式,此处为notifyicon): 表格1.cs(另一份表格): 联机cp.TrayP=“托盘弹出此”我得到一个空异常。 如果我将其更改为cp.TrayPopup(“托盘弹出此”,“测试”)异常抛出任何异常 如果我这样做: private void mouse_Up(object sender, MouseEventArgs e) { var CP = new ControlPanel(); CP.TrayPopu

我需要另一张表格的通知单。 ControlPanel.cs(默认格式,此处为notifyicon):

表格1.cs(另一份表格):

联机
cp.TrayP=“托盘弹出此”我得到一个空异常。
如果我将其更改为
cp.TrayPopup(“托盘弹出此”,“测试”)异常抛出任何异常

如果我这样做:

private void mouse_Up(object sender, MouseEventArgs e) {
    var CP = new ControlPanel();
    CP.TrayPopup("TRAY POPUP THIS", "test");
}
,托盘弹出窗口显示,但它会创建第二个托盘图标,然后显示来自新图标的气球提示。我能做什么?
注意:很抱歉英语不好。

不需要每次都分配内存,试试这个

public partial class Form1 : Form
{

    public ControlPanel cp = new ControlPanel();
    ....

    private void mouse_Up(object sender, MouseEventArgs e) {   
    CP.TrayPopup("TRAY POPUP THIS", "test");
    }
}

您的
公共控制面板cp变量具有空引用,因为其从未初始化。为了访问控制面板,您需要设置对它的有效引用。如果您的ControlPanel.cs位于另一个窗体上,则需要从那里获取该引用。通过公共属性或接口

如果要从ControlPanel打开第二个表单“Form1”,则应将CP实例传递给Form1,如

public partial class ControlPanel : Form
{

    public void ShowForm1(){
        FOrm1 f1 = new Form1();
        f1.SetCp(this);
        f1.show();
    }

    public void TrayPopup(string message, string title)
    {
        TrayIcon.BalloonTipText = message;
        TrayIcon.BalloonTipTitle = title;
        TrayIcon.ShowBalloonTip(1);
    }
}

public partial class Form1 : Form
{

    public ControlPanel _cp;
    public void SetCP(controlPanel cp){
            _cp = cp;
    }

    private void mouse_Up(object sender, MouseEventArgs e) {
            if(_cp != null)
            _cp.TrayPopup("TRAY POPUP THIS", "test");
    }
}

谢谢,但另一个托盘图标是creates.you调用CP.TrayPopup(“托盘弹出此”、“测试”);还有其他地方吗?
newcontrolpanel()上创建新的托盘图标。公共字符串TrayP需要什么?没有什么,我只是复制了他的现有代码。可以删除,谢谢你指出它
public partial class Form1 : Form
{

    public ControlPanel cp = new ControlPanel();
    ....

    private void mouse_Up(object sender, MouseEventArgs e) {   
    CP.TrayPopup("TRAY POPUP THIS", "test");
    }
}
public partial class ControlPanel : Form
{

    public void ShowForm1(){
        FOrm1 f1 = new Form1();
        f1.SetCp(this);
        f1.show();
    }

    public void TrayPopup(string message, string title)
    {
        TrayIcon.BalloonTipText = message;
        TrayIcon.BalloonTipTitle = title;
        TrayIcon.ShowBalloonTip(1);
    }
}

public partial class Form1 : Form
{

    public ControlPanel _cp;
    public void SetCP(controlPanel cp){
            _cp = cp;
    }

    private void mouse_Up(object sender, MouseEventArgs e) {
            if(_cp != null)
            _cp.TrayPopup("TRAY POPUP THIS", "test");
    }
}