50分来个高手:C#中怎么样使弹出窗口的值传给父窗口

我用的是在弹出的模式窗口中有一个ListBox里面有几个项,ListBox下面有个按钮,想通过按钮来实现将ListBox里面的选中项动态添加到父窗口中的一个ListBox... 我用的是在弹出的模式窗口中有一个ListBox里面有几个项,ListBox下面有个按钮,想通过按钮来实现将ListBox里面的选中项动态添加到父窗口中的一个ListBox里面,该怎么写代码呢? 展开
 我来答
百度网友a7339fa40
2011-10-09 · TA获得超过704个赞
知道小有建树答主
回答量:389
采纳率:0%
帮助的人:245万
展开全部
首先想问你是Winform还是asp.net.
如果是asp.net,用JS就行了。简单的例子:
a页面,a.aspx:
脚本
<script type="text/javascript">
function Show()
{
var result = window.showModalDialog("b.aspx", window,"");//打开b页面,把window作为参数传过去,大小什么的就自己去设置
if (typeof (result) == 'undefined') {
result = window.ReturnValue;
}
var list_parent=window.document.getElementById("ListBox1");
var opt=document.createElement("option");
opt.value=opt.text=result;
list_parent.options.add(opt);
}
</script>
页面
<div>
<asp:ListBox ID="ListBox1" runat="server"></asp:ListBox>
<input type="button" onclick="Show()" value="弹出"/>
</div>

然后b页面,b.aspx:
脚本
<script type="text/javascript">
function Return_Value()
{
if (typeof (window.opener) == 'undefined')
{
window.opener = window.dialogArguments; //传window是为了解决返回值浏览器兼容问题
}
var list=window.document.getElementById("ListBox1");
window.retureValue=list.value;
if (window.opener && window.opener != null)
{
window.opener.ReturnValue=list.value;
}
window.close();
}
</script>
页面:
<div>
<asp:ListBox ID="ListBox1" runat="server">
<asp:ListItem Value="天啊"></asp:ListItem>
<asp:ListItem Value="你好"></asp:ListItem>
<asp:ListItem Value="真的"></asp:ListItem>
</asp:ListBox>
<input type="button" value="提交" onclick="Return_Value()"/>
</div>

如果是winform:假设有Form1与Form2窗体
Form1中有listBox1,和button1; 同样Form2中有listBox1,和button1
首先Form1中:
private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.ShowDialog(this);
}
Form2中
Form1 f1 = (Form1)this.Owner;
ListBox list = f1.Controls["listBox1"] as ListBox;
for (int i = 0; i < listBox1.SelectedItems.Count; i++)
{
list.Items.Add(listBox1.SelectedItems[i]);
}
this.Close();

就行了,这些都是最基本的应用,只是个实现出功能的小例子而已,自己看着办吧!
更多追问追答
追问
但是listBox1不可用啊,定义不正确
追答
你追问也要首先告诉我是asp.net还是winform,然后是哪不可用?不然我怎么知道你哪没写对,把代码贴出来最好了
百度网友9278dbf
2011-10-09 · TA获得超过1124个赞
知道小有建树答主
回答量:457
采纳率:0%
帮助的人:300万
展开全部
定义一个公共变量记录呗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
大海之亮
2011-10-09
知道答主
回答量:73
采纳率:0%
帮助的人:15.2万
展开全部
可以用session接收也可以通过网页方式传递
session["listbox"]=ListBox1.SelectedValue;
或string str=ListBox1.SelectedValue;
Response.Redirect("SalesRecordInfo.aspx?sell_id="+str);
在父窗口中接收就行啦
string st=session["listbox"].tostring();
ListBox2.Items.Add(st);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
TomasRen
2011-10-09 · TA获得超过173个赞
知道小有建树答主
回答量:175
采纳率:100%
帮助的人:156万
展开全部
50分呢????你可以使用委托来处理,将处理函数放在父窗口,将子窗口的Listbox的changed事件放在委托里,将值传给父窗口的处理函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
仰星睿2D
2011-10-09 · TA获得超过129个赞
知道小有建树答主
回答量:174
采纳率:0%
帮助的人:175万
展开全部
winform 的话可以在父窗体中 添加属性
public temp
在子窗体中访问 temp 对象 并将 子窗体中想要传送的参数赋值给 父窗体中的temp对象
父窗体就可以使用了

Web 的话 就用Session Cache cookie
session.add("temp"); //存入Session
session["temp"] // 访问Session
Cache 与 cookie 类似
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
朱俊涛圈圈
2011-10-09 · TA获得超过267个赞
知道小有建树答主
回答量:455
采纳率:0%
帮助的人:330万
展开全部
静态变量
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式