当前位置:编程学习 > C#/ASP.NET >>

谁能给我一个这样操作完整代码吗?

我有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#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,