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