50分来个高手:C#中怎么样使弹出窗口的值传给父窗口
我用的是在弹出的模式窗口中有一个ListBox里面有几个项,ListBox下面有个按钮,想通过按钮来实现将ListBox里面的选中项动态添加到父窗口中的一个ListBox...
我用的是在弹出的模式窗口中有一个ListBox里面有几个项,ListBox下面有个按钮,想通过按钮来实现将ListBox里面的选中项动态添加到父窗口中的一个ListBox里面,该怎么写代码呢?
展开
6个回答
展开全部
首先想问你是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();
就行了,这些都是最基本的应用,只是个实现出功能的小例子而已,自己看着办吧!
如果是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,然后是哪不可用?不然我怎么知道你哪没写对,把代码贴出来最好了
展开全部
定义一个公共变量记录呗
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以用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);
session["listbox"]=ListBox1.SelectedValue;
或string str=ListBox1.SelectedValue;
Response.Redirect("SalesRecordInfo.aspx?sell_id="+str);
在父窗口中接收就行啦
string st=session["listbox"].tostring();
ListBox2.Items.Add(st);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
50分呢????你可以使用委托来处理,将处理函数放在父窗口,将子窗口的Listbox的changed事件放在委托里,将值传给父窗口的处理函数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
winform 的话可以在父窗体中 添加属性
public temp
在子窗体中访问 temp 对象 并将 子窗体中想要传送的参数赋值给 父窗体中的temp对象
父窗体就可以使用了
Web 的话 就用Session Cache cookie
session.add("temp"); //存入Session
session["temp"] // 访问Session
Cache 与 cookie 类似
public temp
在子窗体中访问 temp 对象 并将 子窗体中想要传送的参数赋值给 父窗体中的temp对象
父窗体就可以使用了
Web 的话 就用Session Cache cookie
session.add("temp"); //存入Session
session["temp"] // 访问Session
Cache 与 cookie 类似
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
静态变量
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询