总结中窗体间传递数据的几种方法
- 格式:docx
- 大小:16.53 KB
- 文档页数:16
如何在web页面之间传递参数在web开发中,经常会遇到在不同页面之间传递参数的需求。
这些参数可以是用户输入的数据、页面之间的状态信息,甚至是身份验证所需的凭证。
而在确保用户体验的有效地传递参数也是web开发中常见的问题之一。
本文将就web页面之间传递参数的几种方法进行全面评估,并据此撰写一篇有价值的文章。
1. URL参数传递URL参数传递是最常见的一种传递参数的方式。
通过在URL中携带参数的形式,可以方便地在不同页面之间传递数据。
我们可以通过在URL中添加“?key1=value1&key2=value2”这样的参数来传递信息。
这种方式简单直接,但由于参数会直接显示在URL中,可能会带来安全隐患和信息泄露的问题。
2. 表单提交另一种常见的传递参数的方式是通过表单提交。
用户在一个页面填写完表单后,提交表单到服务器,服务器再将参数传递到下一个页面。
这种方式适用于需要用户输入数据并传递到下一个页面的场景,但对于一些简单的参数传递来说,可能会显得过于繁琐。
3. Cookie和SessionCookie和Session是web开发中常用的状态保持机制,也可以用来传递参数。
通过在客户端存储数据,下一个页面可以再次读取这些数据,实现参数的传递。
但需要注意的是,由于涉及到用户隐私信息的存储和传递,需要特别注意安全性和合规性。
4. AJAX请求在现代web应用中,通过AJAX进行页面间数据交互也是一种常见的方式。
通过异步的方式请求数据,并在页面中使用JavaScript来处理返回的数据,可以实现页面之间参数的传递。
这种方式在提高用户体验的也需要注意数据的完整性和安全性。
总结回顾在web开发中,传递参数是一个常见的需求,而选择合适的传递方式也是至关重要的。
无论是通过URL参数、表单提交、Cookie和Session,还是AJAX请求,都需要根据实际场景选择合适的方式。
在使用这些方法的过程中,还需要注意数据的安全性和合规性,以确保用户信息的安全传递。
form的传值方式
在Web应用程序中,form表单是一种将数据传递给服务器的常见方式。
form表单可以使用以下几种传递方式来传递数据:
1. GET方法:通过URL中的查询字符串传递数据,适用于传输少量数据。
2. POST方法:通过HTTP请求的正文传递数据,适用于传输大量数据。
3. PUT方法:将数据作为HTTP请求的正文传递给服务器,用于
更新资源。
4. DELETE方法:将HTTP请求发送到指定的资源来删除它。
5. Head方法:以类似GET的方式请求一个资源,但不需要响应
正文。
6. Options方法:返回有关特定资源支持的HTTP方法和其他操
作的信息。
在表单中,可以使用隐藏字段来传递额外的数据,也可以使用JavaScript来动态生成表单数据并发送到服务器。
无论使用何种传递
方式,都应该注意保护用户隐私和安全,防止数据被恶意篡改或窃取。
MFC对话框与对话框之间的参数传递实例在MFC中,对话框(dialog)是一种用户界面的组件,用于与用户进行交互。
对话框通常包含各种控件,如按钮、文本框、列表框等,用户可以通过这些控件输入信息或执行操作。
有时候我们需要在不同的对话框之间传递参数,以实现数据共享或在对话框之间传递信息。
下面通过一个实例来说明如何在MFC中实现对话框之间的参数传递。
以一个学生信息管理系统为例,假设我们有两个对话框,一个用于输入学生基本信息(对话框A),一个用于显示学生信息(对话框B)。
我们希望在对话框A中输入学生信息后,能够在对话框B中显示该学生的信息。
在对话框A的头文件中,定义一个结构体用于保存学生信息:```struct StudentInfoCString name;int age;CString gender;};```然后在对话框A的代码中,添加一个成员变量用于保存学生信息:```StudentInfo m_studentInfo;``````m_ = "";m_studentInfo.age = 0;m_studentInfo.gender = "";GetDlgItem(IDC_EDIT_NAME)->SetWindowText(m_);GetDlgItem(IDC_EDIT_AGE)->SetWindowText(m_studentInfo.age);GetDlgItem(IDC_EDIT_GENDER)->SetWindowText(m_studentInfo.gender);```在对话框A的代码中,添加一个按钮的响应函数OnOK(,在此函数中将学生信息传递给对话框B:```void CDialogA::OnOKGetDlgItem(IDC_EDIT_NAME)->GetWindowText(m_);GetDlgItem(IDC_EDIT_AGE)->GetWindowText(m_studentInfo.age);GetDlgItem(IDC_EDIT_GENDER)->GetWindowText(m_studentInfo.gender);CDialogB dlgB;dlgB.SetStudentInfo(m_studentInfo); // 将学生信息传递给对话框BdlgB.DoModal(; // 打开对话框BCDialog::OnOK(;```在对话框B的头文件中,添加一个成员变量用于保存学生信息:```StudentInfo m_studentInfo;```在对话框B的头文件中,添加一个函数用于接收学生信息```void CDialogA::SetStudentInfo(const StudentInfo& studentInfo) m_studentInfo = studentInfo;GetDlgItem(IDC_STATIC_NAME)->SetWindowText(m_);GetDlgItem(IDC_STATIC_AGE)->SetWindowText(m_studentInfo.age);GetDlgItem(IDC_STATIC_GENDER)->SetWindowText(m_studentInfo.gender);```通过以上代码,我们实现了在对话框A中输入学生信息后,在对话框B中显示该学生的信息。
窗 体一.认识窗体:(一)窗体是应用程序和用户之间的接口,是创建数据库应用系统最基本的对象。
(二)窗体的作用:(1)输入、编辑、显示和打印数据;控制应用程序流程。
(三)窗体包括两部分内容:提示信息和要处理的记录; (四)窗体本身不存储数据,仅提供一个操作界面;二.窗体的类型:1.纵栏式窗体: 2.表格式窗体:3.数据表窗体:主要用来作为一个窗体的子窗体。
4.主/子窗体:三.窗体的视图:1.“设计”视图:是创建和修改窗体的窗口。
2.“窗体”视图:是用于输入、修改和查看数据的窗口。
四.创建窗体:使用向导创建窗体:自动创建窗体:灵活、方便,但不能满足更为复杂的要求。
如:以“选课成绩”表创建数据表式窗体。
“选课成绩” 窗体向导:可以灵活、全面的控制数据来源与窗体格式。
(一)创建基于单一数据源的窗体:如:使用“窗体向导”创建纵栏式窗体,显示“课程表”中所有的字段。
“课程表” (二)创建基于多个数据源的窗体:(主/子窗体)如:以“学生表”和“选课成绩”表为数据源,创建嵌入式的主子窗体。
“学生表1 选课成绩1” 如:以“学生表”和“选课成绩”表为数据源,创建链接式的主子窗体。
“学生表2 选课成绩2” 如:将“选课成绩”窗体设置为“课程表”窗体的子窗体。
创建图表窗体:(一)创建数据透视表窗体:如:以“教师”表为数据源,创建计算各系不同职称人数的数据透视表窗体。
(二)创建数据透图表窗体:如:以“教师”表为数据源,创建计算各系不同职称人数的数据透视图窗体。
(三)创建图表窗体:如:以“教师”表为数据源,创建图表窗体,统计并显示各系不同职称人数。
5.图表窗体:6.数据透视表窗体: 7.数据透视图窗体:五.设计窗体:(一)窗体设计视图的组成部分与操作:组成:(1).主体(2).窗体页眉(3).窗体页脚操作:(4).节的添加与删除。
.工具箱:用于添加控件;(二)常用的控件:窗体是由各种控件对象组成,常用控件对象如下:1.标签控件:用来在窗体或报表上显示说明文字;2.文本框控件:用来显示、输入或编辑数据,是一种交互式控件,可以在内写计算表达式;3.复选框:方形形式,主要用于实现多选,打钩状态为True;4.选项按扭:圆圈形式,主要用于单选,实心点状态为True;5.切换按扭:有按下和弹起两种状态;按下为True6.选项组控件:标签、组框与(复选框、选项按扭、切换按扭)的组合;7.列表框:用户只能从列表框中选择值,而不能输入新值;8.组合框:用户既可以选择值,也可以输入新值;9.命令按扭:可以执行某项操作;如:确定、取消、关闭、添加记录、删除记录、退出。
创建窗体的方法在Microsoft Excel中,创建窗体可以帮助我们更方便地输入和处理数据。
窗体是一种便捷的数据输入工具,可以通过设置数据输入的格式和规则,让用户更加方便地输入数据,减少错误输入的可能性,提高数据的准确性和完整性。
下面,我将介绍如何在Excel中创建窗体,以及一些常用的窗体操作方法。
首先,打开Excel表格,选择你要创建窗体的数据区域。
然后点击“数据”选项卡,在“工具”组中找到“表单”按钮,点击它即可创建窗体。
接着,Excel会自动识别你选中的数据区域,并将其转换成窗体的形式,以便于数据的输入和查看。
在创建窗体之后,你可以通过窗体来进行数据的输入和编辑。
在窗体中,每一行对应一个数据记录,每一列对应数据的一个字段。
你可以通过在相应的字段中输入数据来添加新的记录,也可以通过在窗体中选择已有的记录来进行编辑和删除操作。
通过窗体,你可以更加直观地看到数据的结构和内容,方便进行数据的管理和操作。
除了基本的数据输入和编辑功能,窗体还提供了一些其他的操作方法,以方便用户对数据进行处理。
比如,你可以通过窗体来进行数据的筛选和排序,以便于查找和展示特定的数据。
你还可以通过窗体来进行数据的复制和粘贴,以便于在不同的数据表格之间进行数据的交换和共享。
通过这些操作方法,你可以更加方便地对数据进行管理和分析。
除了基本的窗体操作方法,你还可以通过设置窗体属性来对窗体进行进一步的定制。
比如,你可以设置窗体的输入规则和格式,以限制用户输入的内容和格式,确保数据的准确性和完整性。
你还可以设置窗体的外观和布局,以使其更符合你的个性化需求。
通过这些设置,你可以定制出适合自己需求的窗体,提高数据处理的效率和便捷性。
总的来说,通过在Excel中创建窗体,我们可以更加方便地进行数据的输入和处理。
窗体提供了丰富的操作方法和设置选项,可以满足不同用户的个性化需求,提高数据处理的效率和准确性。
希望上述介绍对你有所帮助,让你更加熟练地使用Excel中的窗体功能。
如何在C#⽤WM_COPYDATA消息来实现两个进程之间传递数据简介:本⽂着重讲述了如果⽤WM_COPYDATA消息来实现两个进程之间传递数据.进程之间通讯的⼏种⽅法:在Windows程序中,各个进程之间常常需要交换数据,进⾏数据通讯。
常⽤的⽅法有使⽤内存映射⽂件通过共享内存DLL共享内存使⽤SendMessage向另⼀进程发送WM_COPYDATA消息⽐起前两种的复杂实现来,WM_COPYDATA消息⽆疑是⼀种经济实惠的⼀中⽅法.WM_COPYDATA消息的主要⽬的是允许在进程间传递只读数据。
Windows在通过WM_COPYDATA消息传递期间,不提供继承同步⽅式。
SDK⽂档推荐⽤户使⽤SendMessage函数,接受⽅在数据拷贝完成前不返回,这样发送⽅就不可能删除和修改数据:这个函数的原型及其要⽤到的结构如下:SendMessage(hwnd,WM_COPYDATA,wParam,lParam);其中,WM_COPYDATA对应的⼗六进制数为0x004AwParam设置为包含数据的窗⼝的句柄。
lParam指向⼀个COPYDATASTRUCT的结构:typedef struct tagCOPYDATASTRUCT{DWORD dwData;//⽤户定义数据DWORD cbData;//数据⼤⼩PVOID lpData;//指向数据的指针}COPYDATASTRUCT;该结构⽤来定义⽤户数据。
具体过程如下:⾸先,在发送⽅,⽤FindWindow找到接受⽅的句柄,然后向接受⽅发送WM_COPYDATA消息.接受⽅在DefWndProc事件中,来处理这条消息.由于中⽂编码是两个字节,所以传递中⽂时候字节长度要搞清楚.代码中有适量的解释,⼤家请⾃⼰看吧.具体代码如下://---------------------------------------------------//发送⽅://---------------------------------------------------using System;using System.Drawing;using System.Collections;using ponentModel;using System.Windows.Forms;using System.Data;using System.Runtime.InteropServices;namespace WindowsFormGetMsg{public class Form1 : System.Windows.Forms.Form{private System.Windows.Forms.TextBox textBox1;private ponentModel.Container components = null;const int WM_COPYDATA = 0x004A;public Form1(){InitializeComponent();}protected override void Dispose( bool disposing ){if( disposing ){if (components != null){components.Dispose();}}base.Dispose( disposing );}#region Windows Form Designer generated codeprivate void InitializeComponent(){this.textBox1 = new System.Windows.Forms.TextBox();this.SuspendLayout();//// textBox1//this.textBox1.Location = new System.Drawing.Point (176, 32); = "textBox1";this.textBox1.Size = new System.Drawing.Size(160, 21);this.textBox1.TabIndex = 0;this.textBox1.Text = "textBox1";//// Form1//this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);this.ClientSize = new System.Drawing.Size(432, 266);this.Controls.AddRange(newSystem.Windows.Forms.Control[] {this.textBox1}); = "Form1";this.Text = "接收⽅";this.ResumeLayout(false);}#endregion[STAThread]static void Main(){Application.Run(new Form1());}protected override void DefWndProc(refSystem.Windows.Forms.Message m){switch(m.Msg){//接收⾃定义消息 USER,并显⽰其参数case WM_COPYDATA:COPYDATASTRUCT mystr = new COPYDATASTRUCT(); Type mytype = mystr.GetType(); mystr =(COPYDATASTRUCT)m.GetLParam(mytype); this.textBox1.Text =mystr.lpData;break;default:base.DefWndProc(ref m);break;}}}[StructLayout(LayoutKind.Sequential)]public struct COPYDATASTRUCT{public IntPtr dwData;public int cbData;[MarshalAs(UnmanagedType.LPStr)] public string lpData; }}//---------------------------------------------------//接受⽅//---------------------------------------------------using System;using System.Drawing;using System.Collections;using ponentModel;using System.Windows.Forms;using System.Data;using System.Runtime.InteropServices;namespace WindowsFormGetMsg{public class Form1 : System.Windows.Forms.Form{private System.Windows.Forms.TextBox textBox1;private ponentModel.Container components = null; const int WM_COPYDATA = 0x004A;public Form1(){InitializeComponent();}protected override void Dispose( bool disposing ){if( disposing ){if (components != null){components.Dispose();}}base.Dispose( disposing );}#region Windows Form Designer generated codeprivate void InitializeComponent(){this.textBox1 = new System.Windows.Forms.TextBox();this.SuspendLayout();//// textBox1//this.textBox1.Location = new System.Drawing.Point(176, 32); = "textBox1";this.textBox1.Size = new System.Drawing.Size(160,21);this.textBox1.TabIndex = 0;this.textBox1.Text = "textBox1";//// Form1//this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);this.ClientSize = new System.Drawing.Size(432, 266);this.Controls.AddRange(newSystem.Windows.Forms.Control[] {this.textBox1}); = "Form1";this.Text = "接收⽅";this.ResumeLayout(false);}#endregion[STAThread]static void Main(){Application.Run(new Form1());}protected override void DefWndProc(refSystem.Windows.Forms.Message m){switch(m.Msg){//接收⾃定义消息 USER,并显⽰其参数case WM_COPYDATA:COPYDATASTRUCT mystr = new COPYDATASTRUCT(); Type mytype = mystr.GetType(); mystr =(COPYDATASTRUCT)m.GetLParam(mytype); this.textBox1.Text =mystr.lpData;break;default:base.DefWndProc(ref m);break;}}}[StructLayout(LayoutKind.Sequential)]public struct COPYDATASTRUCT{public IntPtr dwData;public int cbData;[MarshalAs(UnmanagedType.LPStr)] public string lpData; }}。
在Windows Forms(WinForms)中,事件委托是一种常见的用于处理事件的机制。
要在事件中传递参数,可以使用EventHandler委托或自定义委托,并在事件处理方法的签名中包含需要传递的参数。
以下是一个简单的示例,演示如何在WinForms中使用事件委托传递参数:using System;using System.Windows.Forms;public partial class MainForm : Form{// 自定义委托,用于传递参数public delegate void MyEventHandler(string message);// 事件public event MyEventHandler MyEvent;public MainForm(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){// 触发事件,并传递参数OnMyEvent("Hello from MainForm!");}// 事件触发方法protected virtual void OnMyEvent(string message){// 检查是否有订阅者if (MyEvent != null){// 传递参数MyEvent(message);}}// 订阅事件的方法private void EventSubscriber(string message){MessageBox.Show($"Received message: {message}", "Event Subscriber");}private void SubscribeButton_Click(object sender, EventArgs e){// 订阅事件MyEvent += EventSubscriber;}private void UnsubscribeButton_Click(object sender, EventArgs e){// 取消订阅事件MyEvent -= EventSubscriber;}}在上面的示例中,MyEvent是一个自定义事件,通过MyEventHandler委托定义了传递的参数类型(这里是一个字符串)。
vue页面之间传值的方式Vue是一种流行的JavaScript框架,用于构建用户界面。
在Vue中,页面之间的数据传递是非常常见和重要的。
本文将介绍一些Vue页面之间传值的方式。
一、使用Props传递数据在Vue中,我们可以使用props来传递数据给子组件。
父组件可以在子组件中定义props,并将数据传递给子组件。
子组件可以通过props来接收父组件传递的数据。
二、使用事件传递数据除了使用props传递数据外,我们还可以使用事件来传递数据。
父组件可以在子组件中触发事件,并将数据作为参数传递给父组件。
父组件可以通过监听子组件触发的事件来接收数据。
三、使用Vuex进行状态管理在复杂的应用程序中,页面之间的数据传递可能会变得非常复杂。
为了解决这个问题,可以使用Vuex进行状态管理。
Vuex是Vue 的官方状态管理库,可以帮助我们在不同组件之间共享和管理数据。
四、使用路由参数传递数据在Vue中,我们可以使用路由参数来传递数据。
通过定义路由参数,我们可以在不同的页面之间传递数据。
在接收数据的页面中,可以通过$route.params来获取路由参数。
五、使用Query参数传递数据除了路由参数外,我们还可以使用Query参数来传递数据。
Query 参数是通过URL中的查询字符串来传递数据的。
在接收数据的页面中,可以通过$route.query来获取Query参数。
六、使用LocalStorage传递数据除了上述方式外,我们还可以使用浏览器的LocalStorage来传递数据。
LocalStorage是浏览器提供的一种本地存储机制,可以将数据存储在浏览器中。
在不同的页面中,可以使用LocalStorage来读取和写入数据。
七、使用Event Bus传递数据Event Bus是一种用于在Vue应用程序中传递事件和数据的机制。
通过创建一个全局的Event Bus实例,我们可以在不同的组件之间传递数据。
组件可以通过$emit方法触发事件,并通过$on方法来监听事件。
c#winform线程间操作UI的五种⽅法经常因为需要在线程间操作UI⽽头疼,总结了⼀下,记录出来,以后⽅便查阅。
⽅法⼀通过设置窗体属性,取消线程间的安全检查。
(最简单,最省事,也是最不负责任的⼀种)1public partial class one : Form2 {3public one()4 {5 InitializeComponent();6 Control.CheckForIllegalCrossThreadCalls = false;//取消线程间的安全检查7 }89private void Form1_Load(object sender, EventArgs e)10 {11 Thread listen = new Thread(new ThreadStart(receive));12 listen.IsBackground = true;13 listen.Start();14 }15private void receive()16 {17 UdpClient uc = new UdpClient(5839);18while (true)19 {20 IPEndPoint ip = null;21byte[] message = uc.Receive(ref ip);22string messagestring = Encoding.UTF8.GetString(message);23 textBox1.Text = messagestring;24 }25 }2627private void button1_Click(object sender, EventArgs e)28 {29 UdpClient uc = new UdpClient("192.168.0.53",5839);30string messagestring = "改变啦!";31byte[] message = Encoding.UTF8.GetBytes(messagestring);32 uc.Send(message,message.Length);33 uc.Close();34 }35 }上述代码,就是在⼀个窗体内,本窗体给本窗体通过udp发送消息。
不同应用系统之间数据交互的几种方式的实际应用情况1. 数据文件交换背景数据文件交换是最基础和最常见的应用系统之间数据交互方式。
它适用于不同系统之间数据量较小、交互频率较低的场景。
过程1.数据源系统生成需要交互的数据文件,将其存储在指定位置。
2.目标系统定期或根据需要,从指定位置读取数据文件。
3.目标系统对读取到的数据进行解析和处理。
4.目标系统将处理后的结果保存至目标位置。
应用效果•简单:数据文件交换不需要复杂的技术支持,只需通过共享文件夹或FTP等方式进行简单配置即可实现。
•稳定:由于只是简单地传输文件,因此稳定性相对较高。
•成本低:无需额外开发和维护成本。
2. 数据库连接背景数据库连接是一种常见的应用系统之间实现数据共享和交互的方式。
它适用于需要实时共享大量数据的场景。
过程1.源系统建立数据库连接,提供查询接口或服务。
2.目标系统通过网络连接到源数据库,并执行查询操作。
3.源数据库返回查询结果。
4.目标系统解析查询结果,并进行相应的处理和保存。
应用效果•实时性高:通过数据库连接,系统能够实时获取最新的数据。
•数据量大:适用于数据量较大的场景,能够高效地传输和处理大量数据。
•数据一致性:通过数据库连接,可以保证不同系统之间的数据一致性。
3. Web服务调用背景Web服务调用是一种基于HTTP协议的应用系统之间数据交互方式。
它适用于不同系统之间需要进行复杂业务逻辑交互的场景。
过程1.源系统提供Web服务接口,并发布到网络上。
2.目标系统通过HTTP协议调用源系统提供的Web服务接口。
3.源系统接收到请求后,执行相应的业务逻辑,并返回结果给目标系统。
应用效果•灵活性高:Web服务调用可以实现不同系统之间的灵活交互,满足复杂业务需求。
•兼容性好:基于HTTP协议,可以在各种平台和环境下进行跨系统交互。
•安全性考虑:通过HTTPS等方式对Web服务进行加密和认证,保障数据交互的安全性。
4. 消息队列背景消息队列是一种异步的应用系统之间数据交互方式。
主程序与子程序参数传递方式在编程领域,主程序与子程序之间的参数传递是一种非常重要的通信方式。
通过参数传递,主程序可以向子程序传递数据,子程序也可以将处理结果返回给主程序。
本文将介绍几种常见的参数传递方式,以及它们各自的特点和适用场景。
1. 传值方式传值方式是一种最简单的参数传递方式,也是最常见的一种。
在传值方式中,主程序将实际参数的值传递给子程序,子程序对参数的修改不会影响到主程序中的实际参数。
这种方式适用于参数较少、数据量小的情况,可以保证主程序和子程序之间的数据独立性。
2. 传址方式传址方式是另一种常见的参数传递方式,在这种方式中,主程序将实际参数的地址传递给子程序,子程序通过地址可以直接操作主程序中的实际参数。
传址方式可以减少数据的复制,提高程序的运行效率,适用于参数较多、数据量大的情况。
3. 传引用方式传引用方式是一种更加高级的参数传递方式,在这种方式中,主程序将实际参数的引用传递给子程序,子程序可以通过引用直接访问和修改主程序中的实际参数。
传引用方式可以实现数据的共享和同步,适用于需要频繁传递大量数据的情况。
4. 默认参数传递方式默认参数传递方式是一种为参数设置默认值的方式,在调用子程序时可以不传递该参数,子程序将使用默认值进行处理。
默认参数传递方式可以简化参数传递的过程,提高程序的可读性和可维护性。
5. 关键字参数传递方式关键字参数传递方式是一种通过指定参数名来传递参数的方式,可以提高程序的可读性,避免参数传递的混乱。
通过关键字参数传递方式,可以清晰地指定每个参数的含义和取值,提高程序的可扩展性和灵活性。
6. 可变参数传递方式可变参数传递方式是一种可以传递不定数量参数的方式,在编程中经常用于处理可变长度的参数列表。
通过可变参数传递方式,可以实现参数的灵活传递和处理,适用于需要处理不定数量参数的情况。
总的来说,主程序与子程序之间的参数传递方式多种多样,每种方式都有其独特的特点和适用场景。
window.open()使⽤⽅法以及传参数的问题总结⼀、window.open()⽀持环境:JavaScript1.0+/JScript1.0+/Nav2+/IE3+/Opera3+⼆、基本语法:window.open(pageURL,name,parameters)其中:pageURL 为⼦窗⼝路径name 为⼦窗⼝句柄parameters 为窗⼝参数(各参数⽤逗号分隔)三、⽰例:<SCRIPT><!--window.open ('page.html','newwindow','height=100,width=400,top=0,left=0,toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no, status=no')//写成⼀⾏--></SCRIPT> 脚本运⾏后,page.html将在新窗体newwindow中打开,宽为100,⾼为400,距屏顶0象素,屏左0象素,⽆⼯具条,⽆菜单条,⽆滚动条,不可调整⼤⼩,⽆地址栏,⽆状态栏。
请对照。
上例中涉及的为常⽤的⼏个参数,除此以外还有很多其他参数,请见四。
四、各项参数 其中yes/no也可使⽤1/0;pixel value为具体的数值,单位象素。
参数 | 取值范围 | 说明alwaysLowered | yes/no | 指定窗⼝隐藏在所有窗⼝之后alwaysRaised | yes/no | 指定窗⼝悬浮在所有窗⼝之上depended | yes/no | 是否和⽗窗⼝同时关闭directories | yes/no | Nav2和3的⽬录栏是否可见height | pixel value | 窗⼝⾼度hotkeys | yes/no | 在没菜单栏的窗⼝中设安全退出热键innerHeight | pixel value | 窗⼝中⽂档的像素⾼度innerWidth | pixel value | 窗⼝中⽂档的像素宽度location | yes/no | 位置栏是否可见menubar | yes/no | 菜单栏是否可见outerHeight | pixel value | 设定窗⼝(包括装饰边框)的像素⾼度outerWidth | pixel value | 设定窗⼝(包括装饰边框)的像素宽度resizable | yes/no | 窗⼝⼤⼩是否可调整screenX | pixel value | 窗⼝距屏幕左边界的像素长度screenY | pixel value | 窗⼝距屏幕上边界的像素长度scrollbars | yes/no | 窗⼝是否可有滚动栏titlebar | yes/no | 窗⼝题⽬栏是否可见toolbar | yes/no | 窗⼝⼯具栏是否可见Width | pixel value | 窗⼝的像素宽度z-look | yes/no | 窗⼝被激活后是否浮在其它窗⼝之上=====================================================【1、最基本的弹出窗⼝代码】 其实代码⾮常简单:<SCRIPT LANGUAGE="javascript"><!--window.open ('page.html')--></SCRIPT> 因为着是⼀段javascripts代码,所以它们应该放在<SCRIPT LANGUAGE="javascript">标签和</script>之间。
总结C#中窗体间传递数据的几种方法 (由别人的方法整理) ? 在编写C#windows应用程序的时候我们经常会遇到这种问题,怎么样在两个窗体间传递数据呢?以下是我整理的网上的各种方法,在遇到一个实际问题:在form1中打开一个form2窗口作为录入界面,将录入的值经转换后在form1中显示。 采用了委托的方法,可以实现。(与VC的回调的应用相似) 1.可以通过委托的方法来解决 问题:通过form1做一个录入界面,将里边通过文本框录入的数值复值给 form2中的listview各列,用3个textbox1.text举例吧,分别对应listview的3个列。 可以这么做,如果两个窗体是在同一个命名空间下 定义一个代理,注意这个代理是全局的:(即同一命名空间下,与Form1,Form2平级的) public delegate void MyInvoke(string Item1,string Item2,string Item3); //在窗体From2中有这么一个回调函数,用于在ListView里添加一个新项的: private void UpdateListView(string Item1,string Item2,string Item3) { } //比如说点击Form2的一个按钮弹出Form1进行录入,在点击按钮的事件下: //把委托传过去 Form1 frmEdit=new Form1(new MyInvoke(UpdateListView)); frmEdit.ShowDialog(this); //在Form1里定义一个属性 private MyInvoke mi=null; 在构造函数中接收这个委托: public Form1(MyInvoke myInvoke) { ?? this.mi=myInvoke; } //录入数据后,点击OK按钮,在点击事件下: //回调 this.Close();//关闭Form1 补充:如果我要是想再把form2的值给form1, Form1 frmEdit=new Form1(new MyInvoke(UpdateListView),string para1,string para2...); frmEdit.ShowDialog(this); 然后将Form1的构造函数改成可以接收几个参数的就行了。 2.假如主框架为Form1,打开的搜索对话框是Form2.直接在Form2类中申明一个Form1实例:Form1 f1=new Form1();然后就可以通过f1来调用Form1中的域和函数了。其实不是这样的,你申明的新的Form1实例不是原来的那个Form1对象了,这样操作的是新的Form1中的域和函数,和最先打开的Form1是没有关系的。 我们要做的是把当前的Form1实例传递给Form2,如果是这样的话,问题就很好解决了。 方法1:首先,我们在Form2中定义: private Form1 mF_Form 我们更改Form2的构造函数为有参数的 public Form2 ( Form1 myForm ) { // // Windows 窗体设计器支持所必需的 // InitializeComponent ( ) ; this.mF_Form? = myForm ;?? /////这样在Form1中申明Form2的时候就把Form1的实例传递过来了 // // TODO: 在 InitializeComponent 调用后添加任何构造函数代码 // } 在Form1中,我在 要用到Form2的地方申明如下: Form2 f2=new? Form2(this);////这里的this指的就是Form1当前的实例,也就是把当前Form1的实例通过Form2的构造函数传递给Form2类(其实在网上看到过比较蠢的方式,就是在构造函数里面传递要传递的信息如:字符串或是数字等,这样做很有局限性,不能传递其他的,所有我们可以直接传递实例,来完成传递更多的信息。) 这样在Form2中使用myForm 就可以对原来的Form1窗口进行操作了。但是你要把要操作的Form1中的域和函数定义成public形式的(这样可能不安全),此时的myForm就是真正的最开始打开的Form1了,你可以用这个实例来进行两个窗体的通讯了。 () 3.其实C#中提供了窗体间进行通讯的现成的属性,呵呵,我们能想到的,微软也想到了,他们创造的语言其实确实可以说是人性化了。 在Form1类中申明Form2时用如下代码: Form2 f2=new Form2();//////类Form2中的构造函数不改,还是无参的 f2.owner=this;////这里的this指的是类Form1当前的实例。 //也可以使用函数的方法,给当前实例添加一个附属窗口? 代码:this.AddOwnedForm(f2); 在Form2类的定义中写如下代码: Form1 f1=this.owner; 这样f1对应的就是原来的Form1的实例了,也就可以用这个进行通讯了。但是还是要把不同类之间访问的域和函数定义成public,哎,安全确实是一个问题!! ? 4.使用静态类 ??? 这个也是我们经常要用到的一种数据交互方法。 下面是定义的一个类: using System; using System.Collections; namespace ZZ { ???? public class AppDatas ???? { ???????? private static ArrayList listData; ???????? static AppDatas() ???????? { ????????????? listData = new ArrayList(); ????????????? listData.Add("DotNet"); ????????????? listData.Add("C#"); ????????????? listData.Add("Asp.net"); ????????????? listData.Add("WebService"); ????????????? listData.Add("XML"); ???????? } ???????? public static ArrayList ListData ???????? { ????????????? get{return listData;} ???????? } ???????? public static ArrayList GetListData() ???????? { ????????????? return listData; ???????? } ???? } } 上面包含了一个静态类成员,listData,一个静态构造函数static AppDatas(),用来初始化listData的数据。还有一个静态属性ListData和一个静态GetListData()方法,他们实现了同样的功能就是返回listData。 由于前面两篇文章已经讲了很多,这里不细说了,下面是完整的代码: Form1.cs文件 using System; using System.Drawing; using System.Collections; using System.ComponentModel; namespace ZZ { ???? { ???????? public Form1() ???????? { ????????????? InitializeComponent(); ???????? } ???????? protected override void Dispose( bool disposing ) ???????? { ????????????? if( disposing ) ?????????????????? if(components != null) ?????????????????????? components.Dispose(); ????????????? base.Dispose( disposing ); ???????? } ???????? [STAThread] ???????? static void Main() ???????? { ????????????? Application.Run(new Form1()); ???????? } ???????? private void InitializeComponent() ???????? { ????????????? this.SuspendLayout(); ????????????? this.Name = "Form1"; ????????????? this.Text = "Form1"; ????????????? this.ResumeLayout(false); ???????? } ???????? private void buttonEdit_Click(object sender, System.EventArgs e) ???????? { ????????????? Form2 formChild = new Form2(); ????????????? formChild.ShowDialog(); ???????? } ???? } } Form2.cs文件 using System.Drawing; using System.Collections; using System.ComponentModel; namespace ZZ { ???? { nOK; ???????? public Form2() ???????? { ????????????? InitializeComponent(); ????????????? foreach(object o in AppDatas.ListData) ???????? } ???????? protected override void Dispose( bool disposing ) ???????? {