c# - 如何从另一个窗体调用函数

标签 c# void

在我的项目中,我有一个设置窗体和一个主窗体。 我试图从设置窗体调用主窗体的 MasterReset 函数,但没有任何反应。
主窗体的 Masterreset 函数如下所示。

public void MasterReset()
    {
        DialogResult dialogResult = MessageBox.Show("Are you sure you want to perform master reset? All settings will be set to default.", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
        if (dialogResult == DialogResult.Yes)
        {
            string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
            string phonebook_path = path + "\\Phonebook\\Contacts.xml";
            XmlDocument xDoc = new XmlDocument();
            xDoc.Load(phonebook_path);
            XmlNode xNode = xDoc.SelectSingleNode("People");
            xNode.InnerXml = "";
            xDoc.Save(phonebook_path);
            listView1.Clear();
            people.Clear();
        }
        else if (dialogResult == DialogResult.No)
        {
            return;
        }
    }

我正在像这样从设置表单访问它

private void btn_MasterReset_Click(object sender, EventArgs e)
{
    Main f1 = new Main();
    f1.MasterReset();
}

为什么我看不到任何结果?

最佳答案

你知道吗composition over inheritance是吗?

在你有 MasterReset 的表单中你应该做这样的事情:

假设在您的第二个表单中有类似这样的东西,并且假设您的“主表单”将被称为“MasterForm”。

public partial class Form1 : Form
{
    private MasterForm _masterForm;  

    public Form1(MasterForm masterForm )
    {
        InitializeComponent();
        _masterForm = masterForm;  

    }
}

这是您的 masterForm 类中的代码:

 private void button2_Click(object sender, EventArgs e)
 {
     Form1  form1 = new Form1(this);

 } 

这是你的 form1:

private void btn_MasterReset_Click(object sender, EventArgs e)
{
    _masterForm.MasterReset();
} 

希望这对您有所帮助!

关于c# - 如何从另一个窗体调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20286176/

相关文章:

c# - 从 Threadpool 工作线程启动进程(并在需要时等待)

c# - 将 "data-toggle"与 Html.ActionLink 一起使用

c - 在 C 中返回一个 void 指针作为函数参数

c - 取消引用 void * 就像 (int) -- 标准做法?

c++ - 转换为无效*

c# - 一次读取一个字符的文本文件时检测换行

c# - C#泛型的反约束

C# SqlConnection 无法连接

mysql - 用my_global.h编译c代码,主要功能没问题,但没有别的

C:从 void* 读取 int**