问题是这样的:
我现在有一个listBox,有一个button,当在listBox中选择一项时点这个button,会弹出一个重命名的窗口
在这个弹出的窗口中,一个文本框,一个确定,一个取消……
这个时候如果点确定要进行重命名,如果点取消则什么也不做我已经试了好半天了,如果传一个string的话,不知道怎么返回,
如果把第一个窗体传过去,在新窗体中接收,虽然能点(.)出来,但是写的没有什么效果,还是没有变,感觉像是在对另一个引用做的操作如果谁有办法,帮我解决……谢谢……

解决方案 »

  1.   

    没明白你的意思.
    我猜你是想通过一个弹出的窗体来修改listBox中的项.
    不如你在窗体中加一个事件:
    public delegate void OnReturnValue(object seneder, string value);
    public event OnReturnValue ReturnValue;
    这两个是放在你的弹出的窗体的代码中的.
    然后弹出窗体中确定按钮的事件处理中写
    if(ReturnValue!=null)ReturnValue(this, this.TextBox1.Text);
    this.close();假设这个窗体是Rename;
    在ListBox所在的窗体中这样调用:
    Rename rename = new Rename(somevalue);
    rename.ReturnValue= new OnReturnValue(somemethod);private void somemethod(object sender, string value)
    {
        //处理传回的value
    }
      

  2.   

    1、把重命名的窗口中的textbox1的Modifier从Private改为Public,以便从其他类得到输入的字符串;
    2、在重命名的窗口的OK按键响应函数改成类似这样:
             private void OK_Click(object sender, EventArgs e)
            {
                this.DialogResult = DialogResult.OK;
                this.Close();
            }3、在主窗口中这样调用(假设重命名的窗口叫做FormReName):FormReName frm = new FormRename();
    frm.textbox1.Text = "旧名字";
    if( frm.ShowDialog(this) == DialogResult.OK )
    {
      string newName = frm.textbox1.Text;
      // 改变你的ListBox等等
    }
      

  3.   

    public partial class Form2 : Form //重命名的窗口
        {
            public string str
            {
                get { return this.textBox1.Text; }
                set { this.textBox1.Text = value; }
            }        public Form2()
            {
                InitializeComponent();
            }        private void button_ok_Click(object sender, EventArgs e)
            {
                this.DialogResult = DialogResult.OK;
                this.Close();
            }        private void button_cancel_Click(object sender, EventArgs e)
            {
                this.DialogResult = DialogResult.Cancel;
                this.Close();
            } private void button1_Click(object sender, EventArgs e)
            {
                if (this.listBox1.SelectedItem != null)
                {
                    Form2 f = new Form2();
                    f.str = (string)this.listBox1.SelectedItem;
                    if (f.ShowDialog() == DialogResult.OK)
                    {
                        this.listBox1.Items[this.listBox1.SelectedIndex] = f.str;
                    }
                }
            }