作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在我的项目中,我有一个设置窗体和一个主窗体。我试图从设置窗体调用主窗体的 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/
我是一名优秀的程序员,十分优秀!