谁能给我一个这样操作完整代码吗?
我有2个窗体 A 和B,A 中有一个文本框
B 中有一个列表框
当在A 的文本框中回车时候 跳出 B窗体 然后在 B窗体的列表框中选择一个值回车后 把选择的值传递给刚才 A窗体哪个文本框。
--------------------编程问答-------------------- 应该是,你贴出代码,别人帮你改。
每天回帖即可获得10分可用分!小技巧:教您如何更快获得可用分 --------------------编程问答-------------------- 很简单啊~~A中创建B的实例时接受参数,B公开选择后的结果对象,B关闭后直接在A代码中里取出B的这个结果 --------------------编程问答-------------------- 委托
回复内容太短了!
--------------------编程问答-------------------- http://developer.51cto.com/art/200909/148825.htm
看看吧 --------------------编程问答-------------------- http://www.cnblogs.com/jiahaipeng/archive/2008/10/23/1317430.html --------------------编程问答-------------------- 打开b窗体的时候将a窗体的句柄带过去,在b窗体上直接操作a窗体内的业务逻辑 --------------------编程问答-------------------- A窗体:
FormMain formMain = new FormMain(UserId);
formMain.Login = this;
formMain.Show();
B窗体:
int userId = 0;
public FormMain(int UserId)
{
InitializeComponent();
userId = UserId;
}
private FormLogin login;
public FormLogin Login
{
get { return login; }
set { login = value; }
}
窗体传值。。 --------------------编程问答-------------------- 在列表的事件中NEW一个A的实例,且重写A的构造函数带参的,比如你用的是列表的当值改变的事件,当选择一个值,将这个值带到A 的实例而值就传过去了。 --------------------编程问答-------------------- 对就是窗体之间的传值
--------------------编程问答-------------------- Form()里面可以待参数传值的 --------------------编程问答-------------------- 顶顶在说,学习关注中、 --------------------编程问答-------------------- A 中
textbox1_keydown()
{
//检查当按下的是回车时
FormB b=new Formb();
if(b.ShowDilag()==DilagRsult.OK)
{
//将b的值写到文本框
textbox1.text=b.aaa
}
}
b中
public static string aaa="";
//当list选中时
aaa=list1.text;
this.DilagRsult=dilagRsult.OK; --------------------编程问答-------------------- public delegate void SelectedItemEventHandler(string value);
public partial class FormA : Form
{
public FormA()
{
InitializeComponent();
}
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
FormB frm = new FormB();
frm.OnSelected += delegate(string value)
{
this.textBox1.Text = value;
};
frm.ShowDialog();
}
}
}
public partial class FormB : Form
{
public SelectedItemEventHandler OnSelected = null;
public FormB()
{
InitializeComponent();
}
private void listBox1_DoubleClick(object sender, EventArgs e)
{
if (this.listBox1.SelectedItem != null
&& this.OnSelected != null)
{
this.OnSelected(this.listBox1.SelectedItem.ToString());
this.Close();
}
}
} --------------------编程问答-------------------- 其实委托是一个很好的东西 --------------------编程问答-------------------- 都有了 --------------------编程问答-------------------- 其实你这个问题描述的就是窗体之间的传值问题。。
示例代码如下:
A窗体:textbox
B窗体: combox
首先呢,判断textbox是否为空
定义一个属性
private static string strText;
public static string StrText
{
get{return strText;}
set{strText = value}
}
if(textbox.text.trim() !="")
{
textbox回车事件(你判断下你按下的是否为回车键)
{
//这个你可以在A窗体放置一个按钮,设置窗体的AccetpButton为该按钮(就可以实现回车触发事件)
this.StrText = this.textbox.text.trim();
}
}
在B窗体加载的时候就可以根据上面的StrText 值来做相应的操作
同样的 在B窗体中用相同的思路
思路:
1、在B窗体中,也使用属性(参照上面)
private static string strText1;
public ......... StrText1
{
}
2、将选中列表框的值赋给属性 this.combobox.selecttext = StrText1;
3、弹出A窗体 A.show();
4、在加载A窗体时,把StrText1值赋给A窗体的textbox
在A窗体中 this.textbox.text = B.StrText1;
大致的代码应该可以实现你的功能...
参考下。。。
--------------------编程问答-------------------- 利用中午的一点时间 给你写了些思路 你可以参考下 大致的代码应该就是这样的
可能写的不是很规范、很清楚
但是意思在那里 。。。
--------------------编程问答-------------------- 简单的事情搞复杂了。。。。
楼主可以使用Form的showDialog()方法
FormA中的代码如下
private void textBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == Keys.Enter)
{
FormB fb = new FormB();
if(fb.ShowDialog() == DialogResult.Ok)
{
textBox.Text = fb.ResultValue;
}
}
}
FormB中的代码如下:
private string _resultValue="";
public string ResultValue
{
get { return _resultValue;}
set { _resultValue = value;}
}
private void listBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == Keys.Enter)
{
//判断选择是否符合要求(如 有没有选中)
//code
//
//判断结束后 将值赋给_resultValue
_resultValue="需要传递给FormA的值";
//最后设置DialogResult
this.DialogResult=DialogResult.Ok;
}
}
//如果有“取消”按钮或者“取消”方法的话
//只需要在方法里面写this.DialogResult = DialogResult.Cancel;即可
--------------------编程问答-------------------- 楼上的各位高手都给出了答案了。可以结贴了 --------------------编程问答-------------------- 学习。。。学习 --------------------编程问答-------------------- FormB fb = new FormB();
fb.strvalue = this.textbox1.text;
if(fb.ShowDialog() == DialogResult.Ok)
{
this.textbox1.Text = fb.strvalue;
}
--------------------编程问答-------------------- 上面说的都挺好的,顶 --------------------编程问答-------------------- 每天回帖即可获得10分可用分!小技巧:教您如何更快获得可用分 --------------------编程问答-------------------- 每天回帖即可获得10分可用分!小技巧:教您如何更快获得可用分 --------------------编程问答-------------------- mark... --------------------编程问答-------------------- winform不懂,顶完闪人 --------------------编程问答-------------------- 分给我我把 --------------------编程问答--------------------
补充:.NET技术 , C#