日期:2014-05-18  浏览次数:20768 次

winform 如何让 form2更改form1中listbox选中的值
form1中 有个listbox2。 现在用一个button调用form2来重命名listbox2选中的值
要用什么方法做呢

------解决方案--------------------
看这里
http://topic.csdn.net/u/20080209/15/01dde26a-76d5-441e-a9f6-4f5c7cb9e33c.html
问过很多次的问题了哦
------解决方案--------------------
Form1:
void btn_Click(......)
{
Form2 frm = new Form2(this);
frm.ShowDialog();
}

Form2:
//添加对Form1的一个链接。
Form1 Main_Form = null;

public Form2(Form1 _mainF)
{
InitializeComponent();
Main_Form = _mainF;
}
//Hide default constructor
private Form2(){}

void Btn_Click(......)
{
if(Main_Form != null)
Main_Form.AddItemToListBox(......);
}

------解决方案--------------------
用事件吧
C# code

    public delegate void SendDataEventHandler(object sender,SendDataEventArgs e);

    public class SendDataEventArgs: EventArgs
    {
        private string data;
        public string SendedData
        {
            get { return data; }
        }

        public SendDataEventArgs(string data)
        {
            this.data = data;
        }
    }

//定义一个公共的静态类
    public static class FormEvent
    {
        public static event SendDataEventHandler SendData;

        public static void OnSendData(object sender, SendDataEventArgs e)
        {
            SendData(sender, e);
        }
    }

//Form1中添加对事件的响应

FormEvent.SendData += new SendDataEventHandler(FormEvent_OnSendData);

private void FormEvent_OnSendData(object sender,SendDataEventArgs e)
{
//处理你要做的事
}


//Form2
//在要做事的时候引发事件
                SendDataEventArgs ee = new SendDataEventArgs(str, true);
                FormEvent.OnSendData(this, ee);

------解决方案--------------------
对于窗体的交换,写过两篇文章建议参考,
Windows窗体间的数据交互
http://blog.csdn.net/zhzuo/archive/2004/04/05/22027.aspx
窗体的参数传递
http://blog.csdn.net/zhzuo/archive/2006/05/05/708941.aspx#sec5