菜鸟求教不关闭子窗体的问题

sophia__rp 2009-09-08 10:07:52
从form1中弹出form2,form2点击某按钮将一些参数传给form1,想让form2继续显示。
是不是不能用form2.DialogResult? 貌似这样form2就关掉了
...全文
80 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
sophia__rp 2009-09-08
  • 打赏
  • 举报
回复
多谢多谢~~~
wxm3630478 2009-09-08
  • 打赏
  • 举报
回复
if (f2.DialogResult == DialogResult.None)
{
trackPointPara tp=getTrackPoint.trackpp(f2);//定义点
DrawTrackPoint(tp.Longitude, tp.Latitude, 255, 96, 1, tp.CpuId); //绘制点
}


这是个很简单的 问题 ,看来很多人还不会用啊

if (f2.DialogResult == DialogResult.None)
{MessageBox.Show("点了None按钮");}
if (f2.DialogResult == DialogResult.OK)
{MessageBox.Show("点了Ok按钮");}
if (f2.DialogResult == DialogResult.Cancel) 这些知道怎么用不
{MessageBox.Show("点了Cancel按钮");}

加这个判断 一般是配合 按钮Button 用的 button 有一个属性叫 DialogResult 属性栏里自己看
当点击了 那个按钮执行什么操作

当button1的DialogResult 设置为 OK 的时候 就会 执行
if (f2.DialogResult == DialogResult.OK)
{MessageBox.Show("点了Ok按钮");}

当button2的DialogResult 设置为 Cancel 的时候 就会 执行
if (f2.DialogResult == DialogResult.OK)
{MessageBox.Show("点了Cancel按钮");}

上面那么些 不管里 写没写 form2 的关闭方法 f2.Close() 都会关闭form2


难的写了 吃饭去了


要想不关闭Form2 ...............

tianrui456 2009-09-08
  • 打赏
  • 举报
回复
我上面写错一句

private void CancelTicektForm_FormClosing(object sender, FormClosingEventArgs e)
{
if(e.CloseReason == CloseReason.UserClosing)
{
e.Cancel = true;
this.Hide();
}
}

BitCoffee 2009-09-08
  • 打赏
  • 举报
回复
Form1中:
将DrawTrackPoint设置为public
打开Form2时:
Form2 frmForm2 = new Form2();
frmForm2.frmForm1 = this;
frmForm2.show();

Form2中:
public Form1 frmForm1;

在Form2中便可以调用frmForm1.DrawTrackPoint();
tianrui456 2009-09-08
  • 打赏
  • 举报
回复

//form2中用这个方法屏蔽用户自己关闭窗口(用户指定关闭窗口仅仅是隐藏了窗口
private void CancelTicektForm_FormClosing(object sender, FormClosingEventArgs e)
{
e.CloseReason == CloseReason.UserClosing;
e.Cancel = true;
this.Hide();
}
//form1中设置一个 属性(当这个属性改变以后触发某些事件)当然这个值可以根据你的要求自己设定
private bool isChanged = false;
public bool ChangeStatu
{
set
{
if(isChanged != value)
{
isChanged = value;
//do your job;
}
}
get{return isChanged;}
}
//在form1中要显示form2的语句
form2 sfrm2 = new form2();
form2.show();
form2.Owner = this;
//在form2中设置更改变量
form1 ownerFrm = (from1)this.Owner;
ownerFrm.ChangeStatu = ture;//这里可以根据你的需要来设置变量,如果状态改变 form1就执行相应的your job


解答完毕
sophia__rp 2009-09-08
  • 打赏
  • 举报
回复
不小心把最后两句代码贴到外面来了……
sophia__rp 2009-09-08
  • 打赏
  • 举报
回复
是不是逻辑太混乱了……
是这样,form1中有个绘制地图点的方法,form2里有一些点坐标,我希望点到某个点的时候form1会在地图中绘制这个点,同时form2不关闭,还可以再点其它坐标,在form1中显示。
部分代码:
form1中:
 private void btn_Click(object sender, EventArgs e)
{
Form2 f2 = new From2();
f2.ShowDialog();
if (f2.DialogResult == DialogResult.None)
{
trackPointPara tp=getTrackPoint.trackpp(f2);//定义点
DrawTrackPoint(tp.Longitude, tp.Latitude, 255, 96, 1, tp.CpuId); //绘制点
}
}
class trackPointPara
{//...}
private void DrawTrackPoint(double x, double y, uint uintColor, int intSize, int intStyle, string CPUID)
{//...}

form2中:
 private void btnLocation_Click(object sender, EventArgs e)
{
Form1 f1 = new Form1();
getTrackPoint g = new getTrackPoint();
//this.TopLevel = false;
this.DialogResult = DialogResult.None;

}
class getTrackPoint //此类中获得要传给form1的参数
{//...}
conggang 2009-09-08
  • 打赏
  • 举报
回复
只是传值的话,不关闭Form2就没事啊!
sophia__rp 2009-09-08
  • 打赏
  • 举报
回复
传参数回form1是要调用form1的一个方法,此方法在form1中也要多次使用,所以不能static……
---------------------
我设为none 怎么还是关了呢:(,而且也没调用form1的方法了
limeng315 2009-09-08
  • 打赏
  • 举报
回复
在form1中定义一些public static的变量,点form2的按钮对form1的变量赋值不就行了吗。
wxm3630478 2009-09-08
  • 打赏
  • 举报
回复
form2.DialogResult 能用, 只要你把点击的那个按钮(button) 的 DialogResult(属性栏中可设置) 设置为None 就可以

其他的值 都会关闭form2 的
robin521 2009-09-08
  • 打赏
  • 举报
回复
form1调用form2这个过程不结束,form2就不会关闭.

110,571

社区成员

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

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

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