
<script language="JavaScript">function apply() { //获取子窗口中checkbox控件对象数组,注意获取对象数组的方法 var chkGroup=document.getElementsByName("chkGroup")//调用父窗口的对应方法,调用模式是window.opener.方法(参数) window.opener.addSel(chkGroup)//关闭当前窗口 window.close()} </script >这是在子窗口中的关键code
<script language="javascript"> function addSel(chkGroup) {if(null==chkGroup){ alert("当前没有组可以增加") } else { var selCtrl = document.getElementById("belongGroup") var len= chkGroup.length var opt= null var chk=null for(i=0i<leni++) { if(chkGroup.checked) {chk = chkGroup// opt = new Option(chk.name,chk.value,false,false)opt = document.createElement('option') opt.value=chk.value opt.text=chk.name selCtrl.add(opt,selCtrl.length)} } } } </script >这是在父窗口中的关键code
大家可以注意一下,创建select控件的option有两种方法 一种是直接当做对象,new 出来 例如你可以 opt = new Option(chk.name,chk.value,false,false)第二种是调用document的方法来创建 opt = document.createElement('option') 当然这样就必须在多加上几行赋值的代码.例如 opt.value=chk.value opt.text=chk.name而select控件增加option的方法就是 selCtrl.add(Option对象,索引)之前在网上有另外一个方法 selCtrl.appendChild(Option对象)这个方法不好使,不知为什么,Option对象确实是附加上去,但是值却是空的 即在select控件中点击,确实有对应option存在,看到的却是空白
而且另外一个地方,我最初是想把对父窗口select控件的增加的那段code也放在子窗口中 但是也就是不好使,不理解这是为何 所以后来只好把checkbox的控件数值作为参数传递给父窗口的方法
几个注意的地方,写javascript的时候常常会不自觉引入Java的思维 例如变量类型,例如String str, int x之类,在方法定义的时候 也会是function method(var xx){}这样的东东 记住,方法声明一定function method(xx){} ,变量可以是var str,var xx
最简单的方式:在子窗口里将要传出来的数据写成public的,父窗口中用子窗口的实例就能访问到了。好一点的方式:申明一个委托,把委托传到子窗口中,在子窗口关闭的时候调用这个委托函数,把参数传进去就可以了,这就叫回调函数了。
你可以在父窗体中重写个form方法:例:public Form1(string h)
{
InitializeComponent()
this.h = h
label1.Text=h
}
然后在子类中这样写:例单击一按钮事件:
private void button1_Click(object sender, EventArgs e)
{
Form1 a =new Form1("bb")//这里测试把bb传过去!
a.Show()
}
希望能帮到你!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)