请问,使用showdialog时能否返回一些其它参数? 我知道能够返回dialogresult,但是由于某种原因,我还需要返回一个ID号,可以在使用对话框的时候返回这种值吗?请问如何返回? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不知道如果用你思考的这个方式返回,但是你可以用一个字段来记录你要返回的ID号,然后通过dialog的实例来读取这个值也许更好,或者你在初始化这个dialog的时候,代入一个参数,如果返回dialogResult.OK,那么这个代入的参数赋于相应的值, 不就可以实现么? 不知道这个ShowDialog()方法是否可以被Override呢? 可以定义一个全局公共量,作为你要判断的变量。在定义一个方法 重新包装 showdialog方法,在方法里修改变量,并返回变量。我用过。 谢谢大家,但小弟还有一点不明白,就是顺序问题。因为这个值还是需要在窗体中做一定的处理,只有在最后的时候才能得到。我设想的是点击按钮进入窗体,同时锁定原来的窗体,showdialog可以完成这个任务,但是使用属性的话,我怎么得到这个值?怎么锁定原来的窗体呢?1楼的方法,其实我没弄懂。能不能再详细一点?我的目的是:点击按钮,锁定原窗体,打开新窗体,在新窗体中选择数据,同时进行处理,处理后返回这个值,在原来的窗体中进行再处理。或者不用showdialog有没有其它方法呢? 在对话窗上写一个Public属性,或者把你需要使用的控件设置为Public即可在对话窗关闭以后,只要没有超出该对话窗生存期的作用域,都可以直接获取例如窗口A是你的对话窗,你做了一个Public 的文本框叫做t1你一般会这样写var result== A.ShowDialog();if(result == DialogResult.Ok){ //确认按钮 //取值 string 你要的结果 = A.t1; }else{ //取消按钮} form2中:public partial class Form2 : Form { public Form2() { InitializeComponent(); } public int a = 0;//初始值 private void Form2_Load(object sender, EventArgs e) { } public int myshow() { this.ShowDialog(); return a; } private void button1_Click(object sender, EventArgs e) { a++; } }form1中: private void button1_Click(object sender, EventArgs e) { Form2 f2 = new Form2(); int a= f2.myshow();//可以直接返回,也可以直接取f2.a 来判断。} 在打开的对象增加一个:public int ID;ShowDialog()之后读取这个ID了就是了 Form1的代码using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace TestWindowsCommication{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } //字符串ID public string id = string.Empty; /// <summary> /// 打开Form2的按钮 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button_OpenForm2(object sender, EventArgs e) { //初始化Form2 Form2 frm = new Form2(); //显示Form2 frm.ShowDialog(); //获得Form2的id(Form2的ID要设置为public) id = frm.id; } /// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button_ShowID(object sender, EventArgs e) { //消息显示ID MessageBox.Show(id, "ID", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } }}Form2的代码using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace TestWindowsCommication{ public partial class Form2 : Form { public Form2() { InitializeComponent(); } public string id = string.Empty; /// <summary> /// 退出按钮 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button_Exit(object sender, EventArgs e) { id = "test"; this.Close(); } }}测试可行 谢谢兄弟们,弄出来了。方法是在对话框窗体中设置public的变量,GradeInterposeForm tmp = new GradeInterposeForm(); DialogResult dlr = tmp.ShowDialog(); if (dlr == DialogResult.OK) { teachtaskid = tmp.teachtaskid; }很奇怪,这里竟然可以得到这个值,我以为既然返回了DialogResult,这个窗体的生命就结束了,应该无法得到的,但现在竟然得到了,奇怪地很,请问窗体的周期?给分了。 ShowDialog()打开的窗体 执行Close方法 ,其资源是不会被释放的。Show()方法打开的窗体,执行Close方法,他的生命期才会结束。你可以加两个按钮一个ShowDialog()一个Show()测试一下。 如何用C#制作其他语言也可以调用的DLL c# 读取dos命令结果 c# 矢量图问题 [WinForm]DataGridview 和 ComboBox 有关 关于两窗口的通讯问题 如何让字逐个显示。 求助!在C#中如何停止一个已经触发的时间?谢谢! 如何通过C#屏蔽ctrl+alt+del快捷键 UdpClient类的基础问题 我要做一棵树,是从数据库读取信息的,而且是在Web页上做,请高手帮我写个代码 【分享】发两个关于文件遍历的小程序 数据库文件下载
定义一个全局公共量,作为你要判断的变量。
在定义一个方法 重新包装 showdialog方法,在方法里修改变量,并返回变量。
我用过。
if(result == DialogResult.Ok)
{
//确认按钮
//取值
string 你要的结果 = A.t1;
}
else
{
//取消按钮
}
{
public Form2()
{
InitializeComponent();
}
public int a = 0;//初始值
private void Form2_Load(object sender, EventArgs e)
{ }
public int myshow()
{
this.ShowDialog(); return a;
} private void button1_Click(object sender, EventArgs e)
{
a++;
}
}
form1中: private void button1_Click(object sender, EventArgs e)
{ Form2 f2 = new Form2();
int a= f2.myshow();//可以直接返回,也可以直接取f2.a 来判断。
}
public int ID;
ShowDialog()之后读取这个ID了就是了
Form1的代码using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;namespace TestWindowsCommication
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//字符串ID
public string id = string.Empty; /// <summary>
/// 打开Form2的按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button_OpenForm2(object sender, EventArgs e)
{
//初始化Form2
Form2 frm = new Form2();
//显示Form2
frm.ShowDialog();
//获得Form2的id(Form2的ID要设置为public)
id = frm.id;
} /// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button_ShowID(object sender, EventArgs e)
{
//消息显示ID
MessageBox.Show(id, "ID", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
}
}
Form2的代码using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;namespace TestWindowsCommication
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
} public string id = string.Empty;
/// <summary>
/// 退出按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button_Exit(object sender, EventArgs e)
{
id = "test";
this.Close();
}
}
}测试可行
DialogResult dlr = tmp.ShowDialog();
if (dlr == DialogResult.OK)
{
teachtaskid = tmp.teachtaskid;
}
很奇怪,这里竟然可以得到这个值,我以为既然返回了DialogResult,这个窗体的生命就结束了,应该无法得到的,但现在竟然得到了,奇怪地很,请问窗体的周期?给分了。
Show()方法打开的窗体,执行Close方法,他的生命期才会结束。你可以加两个按钮
一个ShowDialog()一个Show()
测试一下。