首页 / C# / c# – 从子类调用公共父函数
c# – 从子类调用公共父函数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 从子类调用公共父函数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1718字,纯文字阅读大概需要3分钟。
内容图文
![c# – 从子类调用公共父函数](/upload/InfoBanner/zyjiaocheng/766/4fb9d7d668884d309bf42b19486cc702.jpg)
在我的Main方法中,我正在实例化UpdateDialog类,其中基于用户是否按下按钮,我需要从Main调用function1().这是代码:
public partial class Main : Form
{
public void function1()
{
doing_stuff_here();
}
private void button1_Click(Object sender, EventArgs e)
{
var update = new UpdateDialog();
update.ShowDialog();
}
}
public partial class UpdateDialog : Form
{
private void button2_Click(object sender, EventArgs e)
{
//call here function1() from Main
}
}
我应该怎么做才能从部分类UpdateDialog中的Main调用function1()?
LE:虽然Styxxy建议的方法似乎是正确的,但由于跨线程无效操作,它在我的应用程序中不能很好地工作,所以我最终使用了Cuong Le建议的委托解决方法.
解决方法:
您必须在UpdateDialog表单中拥有Main表单的实例.正如你所说UpdateDialog是你的主窗体的子窗体,我想你在Main窗体中创建UpdateDialog并在那里做一个show.在显示该表单之前,您可以分配Parent property.
var updateDialog = new UpdateDialog();
// Or use "UpdateDialog updateDialog = new UpdateDialog();" as people like Andreas Johansson don't like the "var" keyword
// Do other stuff here as well
updateDialog.Parent = this;
// Or use Show() for non modal window
updateDialog.ShowDialog();
您收到错误ArgumentException:无法将顶级控件添加到控件中.现在可以通过两种方式解决此问题.
>您可以在主窗体上将TopLevel属性设置为false(我不是很喜欢这个).
>您可以将Owner属性用于主窗体(this).以下两种方式.
您可以手动设置所有者:
updateDialog.Owner = this;
或者您可以将其作为参数添加到Show(owner)或ShowDialog(owner)方法中;这样,所有者也正在设置中.
updateDialog.Show(this);
// or
updateDialog.ShowDialog(this);
“完整”代码使这个:
var updateDialog = new UpdateDialog();
// Do other stuff here as well
updateDialog.Owner= this;
updateDialog.ShowDialog(); // or use .Show()
// or
updateDialog.ShowDialog(this); // or use .Show(this)
内容总结
以上是互联网集市为您收集整理的c# – 从子类调用公共父函数全部内容,希望文章能够帮你解决c# – 从子类调用公共父函数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。