关闭子窗体后,刷新主窗体,主要是刷新按纽状态,但代码写在按纽里面

qq_37436100 2018-09-04 03:05:29


求教大神们,一个自定义控件,放在主窗口,点击后打开子窗体,子窗体关闭后,我要刷新主窗体,但效果变不了,请大神们帮我分析分析

按纽只要一点击,状态总会变化一次
主窗体按纽的代码:
 frmPro fP = new frmPro();
fP.ShowDialog();
if (fP.DialogResult == DialogResult.OK)
{
load_Info();
}


子窗体的退出事件
  private void frmPro_FormClosed(object sender, FormClosedEventArgs e)
{
timer1.Enabled = false;
this.DialogResult = DialogResult.OK;

}


刷新的信息包括了按纽,但按纽显示总是没反应
...全文
381 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
nicholasvb 2018-09-05
  • 打赏
  • 举报
回复
引用 4 楼 starfd 的回复:
 frmPro fP = new frmPro();
if (fP.ShowDialog() == DialogResult.OK)
{
load_Info();
}

正解!
我是小数位 2018-09-05
  • 打赏
  • 举报
回复
引用 8 楼 CXJ0062008 的回复:

form1:
private void button1_Click(object sender, EventArgs e)
{
Form2 frm2=new Form2 ();
frm2.NotifyMainFormReresh += frm2_NotifyMainFormReresh;
frm2.ShowDialog();
}

void frm2_NotifyMainFormReresh(object sender, EventArgs e)
{
Graphics g = this.CreateGraphics();
g.DrawString("我告诉你,窗体2关闭了", this.Font, new SolidBrush(Color.Red), new PointF(50, 50));
}

form2:
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
if(NotifyMainFormReresh!=null)
{
NotifyMainFormReresh(this, null);
}

}


public partial class Form2 : Form
{
public EventHandler NotifyMainFormReresh = null;
public Form2()
{
InitializeComponent();
}

private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
if(NotifyMainFormReresh!=null)
{
NotifyMainFormReresh(this, null);
}

}
}
我是小数位 2018-09-05
  • 打赏
  • 举报
回复

form1:
private void button1_Click(object sender, EventArgs e)
{
Form2 frm2=new Form2 ();
frm2.NotifyMainFormReresh += frm2_NotifyMainFormReresh;
frm2.ShowDialog();
}

void frm2_NotifyMainFormReresh(object sender, EventArgs e)
{
Graphics g = this.CreateGraphics();
g.DrawString("我告诉你,窗体2关闭了", this.Font, new SolidBrush(Color.Red), new PointF(50, 50));
}

form2:
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
if(NotifyMainFormReresh!=null)
{
NotifyMainFormReresh(this, null);
}

}
  • 打赏
  • 举报
回复
你确定 if (fP.ShowDialog() == DialogResult.OK) 代码不能显示 fP 吗?
  • 打赏
  • 举报
回复
用委托实现吧

子窗体:

public delegate void PT(bool state);
public event PT inc;

private void frmPro_FormClosed(object sender, FormClosedEventArgs e)
{
timer1.Enabled = false;
inc.Invoke(false);
}


主窗体:


public void State_Change(bool a)
{
if(!a)
{
load_Info();
}
}

frmPro fP = new frmPro();
fP.inc+=State_Change;
fP.ShowDialog();


qq_37436100 2018-09-04
  • 打赏
  • 举报
回复
引用 3 楼 starfd 的回复:
你上面那句show不会删掉?
删除后,子窗体我没法显示
  • 打赏
  • 举报
回复
 frmPro fP = new frmPro();
if (fP.ShowDialog() == DialogResult.OK)
{
load_Info();
}
  • 打赏
  • 举报
回复
你上面那句show不会删掉?
qq_37436100 2018-09-04
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
if(this.ShowDialog() == DialogResult.OK)
{
}
不是你哪种写法
可是这样写有错误
  • 打赏
  • 举报
回复
if(this.ShowDialog() == DialogResult.OK)
{
}

不是你哪种写法

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧