在web应用中,如何以模态窗口方式新打开子窗口,并往子窗口里传递多个值,而在子窗口中,能接受这些值,并且对这些值修改后,可以再提交传递给父窗口呢?在codeproject上,有篇文章介绍了方法,下面介绍如下:
1 先建一个叫Parent.html的父窗口,写入其中的HTML代码如下:
<HTML>
<HEAD>
<title>Parent Webform</title>
<script language="javascript">
function OpenChild()
{
var ParmA = retvalA.value;
var ParmB = retvalB.value;
var ParmC = retvalC.value;
var MyArgs = new Array(ParmA, ParmB, ParmC);
var WinSettings = "center:yes;resizable:no;dialogHeight:300px"
var MyArgs = window.showModalDialog(
"Child.html", MyArgs, WinSettings);
if (MyArgs == null)
{
window.alert(
"Nothing returned from child. No changes made to input boxes")
}
else
{
retvalA.value=MyArgs[0].toString();
retvalB.value=MyArgs[1].toString();
retvalC.value=MyArgs[2].toString();
}
}
</script>
</HEAD>
<body>
<P><INPUT id="retvalA" type="text" value="ValueA"></P>
<P><INPUT id="retvalB" type="text" value="ValueB"></P>
<P><INPUT id="retvalC" type="text" value="ValueC"></P>
<P><BUTTON onclick="OpenChild()" type="button">
Open Child Window</BUTTON>
</P>
</body>
</HTML>
2 建立一个叫Child.html的窗体,写入HTML代码如下
<HTML>
<HEAD>
<TITLE>Child Webform</TITLE>
<script language="javascript">
function Done() {
var ParmA = tbParamA.value;
var ParmB = tbParamB.value;
var ParmC = tbParamC.value;
var MyArgs = new Array(ParmA, ParmB, ParmC);
window.returnValue = MyArgs;
window.close();
}
function doInit() {
var MyArgs = window.dialogArguments;
tbParamA.value = MyArgs[0].toString();
tbParamB.value = MyArgs[1].toString();
tbParamC.value = MyArgs[2].toString();
}
</script>
</HEAD>
<BODY onload="doInit()">
<P>Param A:<INPUT id="tbParamA" TYPE="text"></P>
<P>Param B:<INPUT ID="tbParamB" TYPE="text"></P>
<P>Param C:<INPUT ID="tbParamC" TYPE="text"></P>
<BUTTON onclick="Done()" type="button">OK</BUTTON>
</BODY>
</HTML>
分享到:
相关推荐
在这个"父窗体传值到子窗体,DEMO"中,我们可以深入理解委托如何在窗口之间的通信中起到关键作用。这个DEMO可能包含了如何在Visual Studio 2010环境下创建一个简单的应用程序,该程序演示了如何使用委托从父窗口...
- 在父窗体中添加一个按钮或者其他控件,点击后弹出子窗体,通常使用`ShowDialog()`方法来以模态对话框的方式显示子窗体。 2. **传递数据** - 当子窗体中完成数据的修改或添加后,需要将这些变化传递回父窗体。这...
3. **控制父窗体与子窗体的关系**: - **使用ShowDialog()**:如果希望在新窗体打开期间阻止父窗体的交互,可以使用`ShowDialog()`方法。这会创建一个模态对话框,用户必须关闭子窗体才能继续操作父窗体。 - **...
子窗体可以是模态或非模态,前者阻止用户与父窗体交互直到子窗体关闭,而后者允许用户同时与两者交互。 **1. 静态变量/属性传递** 一种简单的传递方式是通过静态变量或属性。在子窗体中设置一个静态变量,当需要...
在这个例子中,当用户在子窗体上点击“关闭父窗体”按钮时,会调用`buttonCloseParent_Click`事件处理程序,它将关闭传递给子窗体的父窗体引用。同时,子窗体自身也会被关闭。 除了上述方法,还可以通过事件委托...
当一个模态窗体打开时,它会阻止用户与父窗体或其他非模态窗体的交互,直到该模态窗体被关闭。这种机制在需要用户输入关键信息或确认操作时非常有用。 在描述中提到的“更新另一个窗体内容”是指在模态窗体中进行...
"C#多窗体关联子窗体的实例.rar"这个压缩包文件很可能是提供了一个实际的项目示例,用于演示如何在C#中实现主窗体(父窗体)与多个子窗体之间的交互。下面我们将深入探讨这一主题。 首先,让我们了解什么是窗体...
在Visual Studio 2008这样的环境中,我们经常需要管理多个窗口之间的交互,比如子窗体(子窗口)操作完成后关闭自身并同时关闭父窗体(主窗口)。以下是一些关于这个主题的关键知识点: 1. **窗体层级关系**:在...
当调用`Form.ShowDialog()`时,窗体会以模态方式显示,阻止用户与父窗体进行交互,直到模态窗体关闭。因此,主线程会被阻塞,不能继续执行后续代码,包括更新进度条。 为了解决这个问题,我们可以创建两个子线程:...
子窗体也可以是模态或非模态的,模态窗体会阻止用户与父窗体交互,直到子窗体关闭;非模态则允许同时操作。 2. **创建子窗体**: 创建子窗体通常是通过继承`Form`类并添加所需控件和逻辑实现的。例如: ```csharp...
1. **子窗体与父窗体通信**:在JavaScript或者类似的客户端脚本语言中,子窗体和父窗体之间的通信可以通过多种方式实现。如果子窗体是弹出的模态对话框,通常可以通过事件监听和回调函数来传递信息。例如,可以在子...
4. 使用委托:定义一个委托类型,子窗体通过该委托调用父窗体的方法传递数据。 ```csharp public delegate void DataReturnHandler(object data); // ... ChildForm child = new ChildForm(Parent_ReturnData);...
子窗体是在特定情况下打开的,它们可以是模态或非模态,模态子窗体会阻止用户与父窗体进行交互,直到子窗体关闭,而非模态则允许同时操作。在本例中,用户通过树形控件选择项目,触发相应的子窗体显示。 **2. 树形...
这种方法更灵活,可以在父窗体中定义一个公开的属性或方法,供子窗体调用。这样,子窗体可以通过这个属性或方法来修改父窗体的状态。以下是如何实现的示例: ```csharp // Form1.cs public partial class Form1 : ...
总的来说,`showModalDialog`和`showModelessDialog`是JavaScript中用于创建弹出式对话框的两种方式,它们提供了在父窗口与子窗口之间传递数据的机制,同时也能够定制对话框的外观和行为。在实际应用中,根据需求...
- VB.NET支持MDI应用,允许在一个父窗体中打开和管理多个子窗体。 - 子窗体作为MDIChild,可以在父窗体内部自由移动和排列,提供统一的界面体验。 - 通过`IsMdiContainer=True`设定父窗体为MDI容器,`MdiParent`...
模态对话框会阻止用户与父窗体的交互,直到对话框关闭;非模态对话框则允许用户同时操作多个窗口。在实际应用中,根据需求选择合适类型的对话框。 5. **事件处理**:QT中的事件驱动模型使得窗口系统可以响应用户的...
总结来说,子窗体与父窗体之间的通信主要是通过`window.dialogArguments`获取父窗体引用,`window.returnValue`传递值,以及`window.showModalDialog()`方法的返回值来实现的。在实际应用中,这种通信方式可以用于...
使用`ShowDialog`方法会创建一个模态窗体,用户必须关闭这个窗体后才能继续与父窗体交互。在Form1中打开模态Form2: ```csharp private void button1_Click(object sender, EventArgs e) { Form2 form2 = new ...
2. **消息传递**:当子窗体接收到滚轮事件后,需要向父窗体发送一个消息,告知其应该进行滚动。这可能通过自定义消息或标准的Windows消息完成。 3. **滚动条控制**:在父窗体的事件处理器中,根据接收到的消息调整...