精华内容
下载资源
问答
  • 子窗体创建以及子窗体父窗体之间的通信1、Javascript弹出子窗口 可以通过多种方式实现,下面介绍几种方法(1) 通过window对象的open()方法,open()方法将会产生一个新的window窗口对象 其用法为:window.open(URL,...

    子窗体创建以及子窗体父窗体之间的通信
    1、Javascript弹出子窗口

    可以通过多种方式实现,下面介绍几种方法

    (1) 通过window对象的open()方法,open()方法将会产生一个新的window窗口对象

    其用法为:
    window.open(URL,windowName,parameters);

    URL: 描述要打开的窗口的URL地址,如何为空则不打开任何网页;

    windowName:描述被打开的窗口的民称,可以使用'_top'、'_blank'等内建名称,这里的名称跟<a href="..." target="...">里的target属性是一样的。

    parameters:描述被打开的窗口的参数值,或者说是样貌,其包括窗口的各个属性值,及要传入的参数值。

    例如:

    打开一个 400 x 100 的干净的窗口:
    open('','_blank','width=400,height=100,menubar=no,toolbar=no,
    location=no,directories=no,status=no,scrollbars=yes,resizable=yes')

    也可以这样写: var newWindow = open('','_blank');

    参数说明如下:

    top=# 窗口顶部离开屏幕顶部的像素数
    left=# 窗口左端离开屏幕左端的像素数
    width=# 窗口的宽度
    height=# 窗口的高度
    menubar=... 窗口有没有菜单,取值yes或no
    toolbar=... 窗口有没有工具条,取值yes或no
    location=... 窗口有没有地址栏,取值yes或no
    directories=... 窗口有没有连接区,取值yes或no
    scrollbars=... 窗口有没有滚动条,取值yes或no
    status=... 窗口有没有状态栏,取值yes或no
    resizable=... 窗口给不给调整大小,取值yes或no


    (2) 在javascript中除了通过open()方法建立window对象实现弹出窗口外,还可以通过建立对话框的方式弹出窗口。
    如:
        alert(""); //弹出信息提示对话框
        confirm(""); //弹出信息确认对话框
        prompt(""); //具有交互性质的对话框

    但是,上述实现的弹出窗口具有的功能较为单一,只能完成较为简单的功能。对于需要在对话框中显示多个数据信息,

    甚至是HTML控件就无能为力了。

    (3) 使用模态对话框实现复杂的对话框需求
    在javascript的内建方法中还有一类方法可以实现通过对话框显示HTML内容,
    也就是说可以通过创建对话框的方式来完成创建窗口对象所能完成的功能。
    包括创建模态对话框和非模态对话框两种。
       
    实现方法为:

    //创建模态你对话框
    window.showModalDialog(sURL,vArguments,sFeatures)


    //创建非模态对话框
    window.showModelessDialog(sURL,vArguments,sFeatures)

    其区别在于:

    用showModelessDialog()打开窗口时,不必用window.close()去关闭它,当以非模态方式[IE5]打开时, 打开对话框

    的窗口仍可以进行其他的操作,即对话框不总是最上面的焦点,当打开它的窗口URL改变时,它自动关闭。而模态[IE4]方式的对话框始终有焦点(焦点不可移走,直到它关闭)。模态对话框和打开它的窗口相联系,因此我们打开另外的窗口时,他们的链接关系依然保存,并且隐藏在活动窗口的下面。 showModeDialog()则不然。

    参数说明:

    sURL:必选参数,类型:字符串。

    用来指定对话框要显示的文档的URL。

    vArguments:可选参数,类型:变体。

    用来向对话框传递参数。传递的参数类型不限,包括数组等。对话框通过window.dialogArguments来取得传递进来的参数。

    sFeatures:选参数,类型:字符串。

    用来描述对话框的外观等信息,可以使用以下的一个或几个,用分号“;”隔开。

    dialogHeight:对话框高度

    不小于100px,IE4中dialogHeight和dialogWidth 默认的单位是em,而IE5中是px,为方便其见,在定义modal方式的对话框时,用px做单位。
      
    dialogWidth: 对话框宽度。
     
    dialogLeft: 距离桌面左的距离。
      
    dialogTop: 离桌面上的距离。
     
    center: 窗口是否居中

    默认yes,但仍可以指定高度和宽度,取值范围{yes | no | 1 | 0 }。
      
    help: 是否显示帮助按钮

    默认yes,取值范围 {yes | no | 1 | 0 }。

     resizable: 是否可被改变大小。

    默认no,取值范围 {yes | no | 1 | 0 } [IE5+]。

     status: 是否显示状态栏。

    默认为yes[ Modeless]或no[Modal],

    取值范围{yes | no | 1 | 0 } [IE5+]。

    scroll:指明对话框是否显示滚动条。

    默认为yes,取值范围{ yes | no | 1 | 0 | on | off }。

    还有几个属性是用在HTA中的,在一般的网页中一般不使用。

    dialogHide:在打印或者打印预览时对话框是否隐藏。

    默认为no,取值范围{ yes | no | 1 | 0 | on | off }。

    edge:指明对话框的边框样式。

    默认为raised,取值范围{ sunken | raised }。

    unadorned:默认为no,取值范围{ yes | no | 1 | 0 | on | off }。

    传入参数:

    要想对话框传递参数,是通过vArguments来进行传递的。类型不限制,对于字符串类型,最大为4096个字符。也可以传递对象

    例如:

    var newWin=window.showModalDialog(url,window,'dialogHeight:500px, dialogLeft:100px, dialogTop:100px,

    dialogWidth:300px, status:0, edge:sunken');

    newWin.open();

    与使用window.open()方法创建窗口相比,模态方法创建窗口的区别在于有模态方法创建的窗口后将不能操作父窗口.

    2、子窗口与父窗口间通信

    (1) 使用window.open()创建的窗口与父窗口通信
    可以在子窗口页面中通过window.opener来获取父窗口对象,获取之后子窗口便可以对父窗口执行刷新,传值等操作。
    如:
       window.opener.location.reload(); //子窗口刷新父窗口
       window.opener.location.href //获取父窗口href
       window.opener.locaiton.pathname //获取父窗口路径名

       //刷新父页面
       window.location.href=window.location.href ; //重新定位父页面
       window.location.reload;


    (2) 模态窗口与父窗口通信
    通过使用showModelDialog(),及showModelessDialog()方法创建的子窗口想与父窗口通信时,不能通过window.opener

    来获取父窗口对象。要实现通信,必须在创建模态子窗口时向子窗口传入父窗口对象。

    实现方式为:

    在父窗口中:

    var newWin=window.showModelDialog(url,window,'');
    newWin.open();

    此时参数window即是父窗口对象

    在子窗口中:

    需首先获取父窗口对象,然后才能使用父窗口对象。由于父窗口对象是在创建
    子窗口时通过传入参数的方式传入的,因此,在子窗口中也只能通过获取窗口参数的方式获取父窗口对象。获取方式如下

    var parent=widnow.dialogArguments;
    变量parent便是父窗口对象。

    例如:

    //通过子窗口提交父窗口中的表单:form1,提交后执行查询操作
    var parent=window.dialogArguments;
    parent.document.form1.action="QueryInfor.jsp";
    parent.submit();

    //刷新父页面
    var parent=window.dialogArguments;
    parent.location.reload();

    //从子窗口传值到父窗口
    要实现在模态子窗口中传值到父窗口,需要使用window.returnValue完成

    实现方法如下:

    在子窗口中:

    //获取父窗口某字段值,对该值加一后返回父窗口
    var parent=window.dialogArguments;
    var x=parent.docuement.getElementById("age").value;
    x=x+1;

    //传回x值
    window.returnValue=x;

    在父窗口中:

    //获取来自子窗口的值
    var newWin=window.showModelDialog(url,window,'');
    if(newWin!=null)
    document.getElementById("age").value=newWin;

    //在子窗口中设置父窗口的值
    在子窗口中向父窗口中传入值似乎没有直接设置父窗口中的值来得明了。直接设置父窗口中元素的值显得要更灵活一些,不过具体使用哪种方法要根据实际情况和已有的实现方式而定,因为如果使用了不切实际的方法不仅降低开发效率,也降低了执行效率,往往也会造成不优雅的实现方式和代码风格。

    子窗口设置父窗口的值使用方法如下:

    子窗口中:

    var parent=window.dialogArguments;
    var x=parent.document.getElementById("age").value;
    x=x+1;
    //设置父窗口中age属性值
    parent.document.getElementById("age").value=x;

    以上是我在项目中使用javascript解决子窗口问题时,收集及积累的一些方法和资料。我是使用建立模态窗口的方式来实现的(这主要与项目本身有关),不过其实不论是使用window.open()还是使用window.showModelDialog()进行传参等操作时虽然在实现方法上有很大的差别,初次接触会觉得有点乱,但只要理清子窗口与父窗口之间的关系和角色之后,就很好理解了。

    转载:http://blog.csdn.net/squirrelRao/archive/2007/08/15/1745306.aspx

    补充:

    子窗体传值给父窗体可以通过函数传值

    1.htm 父窗体代码

    <script language="javascript" >

    function toUrl()

    {

    window.open("2.htm","_blank");

    }

    function getvalue(a)

    { Form1.Text1.value=a; }

    </script>

    <form id="form1">

    <input id="text1" width=150px/>

    <input id="button1" name="button1" οnclick="toUrl()"/>

    </form>

    2.htm 子窗体

    <script language="javascript" >

    function goBack()

    {

    window.opener.getvalue("123");

    window.close();

    }

    </script>

    <form id="form1">

    <input id="button1" name="button1" οnclick="goBack()"/>

    </form>

    子窗体父窗体之间传值通过摸态对话框,试验代码

    1.htm 父窗体

    <script language="javascript" >

    function transVal()

    {

    var newwin=window.showModalDialog("2.htm",window);

    if(newwin!="[object]")

    { document.getElementById("Text1").value=newwin; }

    }

    </script>

    <form id="form1">

    <input id=text1 width=150px/>

    <input type="button" id=button1 οnclick="transVal()"/>

    </form>

    2.htm 子窗体

    <script language="javascript" >

    function reVal()

    {var x="123";

    window.returnValue=x;

    window.close();}

    </script>

    <form id="form1">

    <input type="button" id=button1 οnclick="reVal()"/>

    </form>

    展开全文
  • 以前写过子窗体创建后最大化,打开多个窗体后,关闭某个子窗体后其它子窗体也是最大化,今天改一个程序,其中是创建窗体用下面的形式: If Form1Form1:= TForm1.Create(Application);Form1.show; 关闭时用: Form1....

    以前写过子窗体创建后最大化,打开多个窗体后,关闭某个子窗体后其它子窗体也是最大化,今天改一个程序,其中是创建窗体用下面的形式:

     

    If Form1<>Nil Then

    Form1:= TForm1.Create(Application);

    Form1.show;

     

    关闭时用:

     

    Form1.Close;

    Try

      Release();

    Finally

      Form1:=Nil;

    End;

     

    可是在关闭时其他的子窗体却由最大化变为原来设计的大小,经过反复测试,找到了问题的所在:如果是MDIChild窗体,关闭时用下面的即可解

     

    决;另外主窗体在创建时把WindowState设为wsMaximized后,却发现窗体不是最大化的,只要在FormCreate里调用

     

    Perform(WM_SIZE,SIZE_MAXIMIZED,0);并把WindowState设为wsNormal即可。

     

    Action:=caFree;

    Form1:=nil;

     

     

    展开全文
  • C# Winform 利用线程延时创建子窗体并且可跨线程控制主窗体的控件
  • QT 创建子窗体

    千次阅读 2015-08-28 14:15:42
    Qt创建子窗体这里说明一点问题; 一:子窗口创建方式: Qt窗体上的子窗体一般是“new”创建的,当父窗体删除的时候,同时也会清理相关的子窗体; 如果子窗体不是“new”创建的,而是用static变量创建,关闭...

    Qt创建子窗体这里说明一点问题;

    一:子窗口创建方式:

    Qt窗体上的子窗体一般是“new”创建的,当父窗体删除的时候,同时也会清理相关的子窗体;

    如果子窗体不是“new”创建的,而是用static变量创建,关闭父窗体的时候会程序崩溃,原因应该是父窗体删除到static子窗体时不对;

    如:

    //主窗体函数:

    void slot_newWidget()
    {

    //这样会导致问题;
    // static NewQWidget1 nqwt(this);
    // nqwt.show();


    //一般创建方法:
    NewQWidget1 * pNewQWidget1 = new NewQWidget1(this);
    pNewQWidget1->show();

    }



    二:子窗口设置方式:

    (1):通常情况下,对于一个继承与QWidget的子窗体,直接 new NewQWidget1(this);(或setparent(this)) 参数设置为父窗体,然后 show(),这样就可以在指定窗口上创建子窗口;


    (2):如果 一个窗口继承与QDialog,用这种方法,

    NewQWidget1 * pNewQWidget1 = new NewQWidget1(this);
    pNewQWidget1->show();

    只是创建了一个非模态对话框,如果想要这个飞模态对话框显示到指定窗口上,解决方法:

    设置这个窗口的属性:

    (1):pNewQWidget1->setWindowFlags(Qt::Widget); //直接设置QDialog为QWidget;

                  pNewQWidget1->show(); //设置后重新显示;

                   

    (2):

             pNewQWidget1->setWindowFlags(Qt::SubWindow); //设置QDialog为子窗口属性;

              pNewQWidget1->show(); //设置后重新显示;


    (3):

             pNewQWidget1->setWindowFlags(Qt::CustomizeWindowHint|Qt::FramelessWindowHint);//设置自定义无边框窗口;

            pNewQWidget1->show(); //设置后重新显示;


    以上简单列举三种方法,但是可以根据具体需求设置;

    展开全文
  • C#创建子窗体、父窗体

    千次阅读 2020-01-11 15:09:18
    本文部分内容来自书籍。 多文档界面(Multiple-Document Interface,MDI),其窗体用于同时显示多个文档,每个文档显示在各自的窗口中。...所有的子窗体都在父窗体中打开,可以在父窗体中打开多个子窗体...

    本文部分内容来自书籍。

    多文档界面(Multiple-Document InterfaceMDI),其窗体用于同时显示多个文档,每个文档显示在各自的窗口中。

    MDI窗体中,起到容器作用的窗体被称为“父窗体”,

    可以放在父窗体中的“其他窗体”被称为“子窗体”,又称为“MDI子窗体”。

    MDI应用程序启动时,会首先显示父窗体。

    所有的子窗体都在父窗体中打开,可以在父窗体中打开多个子窗体。

     

     

     

     

     

     

     

    展开全文
  • Qt创建子窗体

    万次阅读 2013-11-26 15:41:49
    Qt创建子窗体这里说明一点问题; Qt窗体上的子窗体一般是“new”创建的,当父窗体删除的时候,同时也会清理相关的子窗体; 如果子窗体不是“new”创建的,而是用static变量创建,关闭父窗体的时候会程序崩溃,原因...
  • 再次点击主窗体上的按钮,又会弹出一个新的子窗体。如何无论点击多少次按钮,都只是弹出一个子窗体。解决方法: Form f4; private void buttonGSGL_Click(object sender, EventArgs e)  {    if (f4 == null || ...
  • 我目前做了一个主窗体,里面有个按钮,当点击按钮后弹出另一个子窗体;但我把子窗体最小化后再点击主窗体上的按钮,又会弹出一个新的子窗体。我想问下,该怎样实现 无论点击多少次按钮,都只是显示一个子窗体
  • VC++6.0 和 Delphi之间相互创建以及调用子窗体的一些总结
  • access窗体设计:创建子窗体

    万次阅读 2014-03-20 19:42:05
    同时创建窗体与子窗体 在“数据库”窗口中,单击“对象”下的“窗体” 。 单击“数据库”窗口工具栏上的“新建”按钮。 在“新建窗体”对话框中,单击“窗体向导”。 如果向导未启动 这可能是...
  • Access数据库窗体设计上,可以在一个已经创建好的窗体里嵌套一个子窗体。这样,这个子窗体能根据主窗体的变化而变化。 比如我建立了一个供应商详情的主窗体,这时想在这个主窗体上能根据每个不同的供应商显示它的...
  • Microsoft Visual Studio 2008/...它是包含 MDI 窗口的窗体,MDI 窗口是用户与 MDI 应用程序在其中进行交互的窗口。在 Windows 窗体设计器中以及以编程方式创建 MDI 父窗体都很容易。在设计时创建 MDI 父窗...
  • 有没有使用过Adobe Photoshop如果用过,你就会对插件的概念比较熟悉。对外行人来说,插件仅仅是从外部提供给应用程序的代码块而已(举个例子来说,在一个DLL中)。
  • 动态创建嵌套式子窗体在 父容器内
  • Delphi MDI 子窗体创建和销毁 [zhuan]

    千次阅读 2015-01-22 22:00:58
    文章来源: Delphi MDI 子窗体创建和销毁 1.如果要创建一个mdi child,先看是否有这个child 存在,如果有,则用它,如果没有再创建 //该函数判断MDI 子窗体是否存在,再进行创建和显示 function isInclude(form...
  • 如何创建MDI子窗体

    2009-08-09 10:34:44
    一个MDI窗体的例子,简单描述MDI船体,类似的东西可以制作为活动工具栏。
  • Java创建产生关联的主窗体与子窗体,使用的结构是JDesktopPane-JInternalFrame。JDesktopPane 相当于一个“父窗口”,可以拥有多个作为“子窗口”的JInternalFrame 对象。如运行截图所示,当选中Option 菜单下的...
  • 示例代码使用唯一的文本来确定子窗体创建一个窗体。 该示例使用 MdiParent 属性来指定窗体是子窗体。 此示例需要在示例中的代码称为从窗体具有其 IsMdiContainer 属性设置为 true 和窗体具有名为的私有类级别的...
  • 一:创建父窗体1.创建 Windows 应用程序.2.在"属性"窗口中,将 IsMDIContainer 属性设置为...二:创建子窗体1.添加一个Windows窗体,命名为child.cs.2.设置所需控件.3.在父窗体中双击button1添加代码:priva...
  • 在主窗体中创建子窗体的方法

    千次阅读 2010-04-14 11:06:00
    子窗体设为child,none,然后再主窗体中以创建动态窗口的方法显示就可以了 mytest *ptr;//子窗口类 ptr=new mytest(); ptr->Create(IDD_MYTEST_DIALOG, this); CRect test; this->GetClientRect(&test); ...
  • WPF子窗体

    2021-05-25 15:58:30
    创建子窗体简单案例:创建一个字窗体实现部分需求窗体间传值子窗体内值传递到主窗体 简单案例:创建一个字窗体 #mermaid-svg-w022VZgkfKDtINJZ .label{font-family:'trebuchet ms', verdana, arial;font-family:var...
  • QT 子窗体透明源码

    2018-02-06 16:27:48
    可以将一个子窗体设置为透明,隐藏菜单,可以任意拖动可以将一个子窗体设置为透明,隐藏菜单,可以任意拖动
  • c#多文档主窗体只能对最后创建子窗体操作 怎么对其他窗体操作。
  • 父窗体在创建子窗体后,可以直接通过子窗体对象调用子窗体中的公有属性和方法。 Form2 f2 = new Form2(); string value= f2.value; f2.getValue(); 子窗体调用父窗体 子窗体可以在类中声明一个...
  • 如何在父窗体中创建子窗体?(如何确定父子窗体关系?) 在新建ChildForm 时候,指定其父窗口 ChildForm child=new ChildForm(); child.Parent=this;  child.ShowDialog(); 然后在子窗体中利用利用...
  • MFC 判断子窗体是否已经打开,避免重复创建 在主窗体中,嵌入一个很多个子窗体,但是,每次只显示一个。 我的做法是,首先在主窗体头文件中定义子窗体对象,然后在单击显示按钮的时候,先判断子窗体是否已经被创建...
  • 父窗体Form1,左边是按钮,右边是panel(放置子窗体)   父窗体点击按钮,在panel显示第一个子窗体AA, AA有个按钮,点击按钮,是第二个子窗体ZZ, 怎样将AA的子窗体ZZ也显示在父窗体Form1的panel里:   1、父窗体...
  • access 子窗体 查询

    2010-01-26 08:03:19
    收集的access 子窗体 查询 最全的源代码+解释

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 51,713
精华内容 20,685
关键字:

子窗体怎么创建