在C#中,不同窗体间的控件如何相关联?

在C#中,不同窗体间的控件如何相关联?,第1张

有两种方法:

1种

把Form1的睁告引用传进Form2中,然后给Form1定义一个属性,返回form2需要的数据,就可以了。public class Form1{ public string Value { return "abc" }}public class Form2{private Form1 form public Form2(Form1 form1) { this.form = form1 } public void Caculate() { string str = this.form.Value //str就是Form1中的数据 }}

2种:

Windowns的API类

using System

using System.Runtime.InteropServices

namespace TestHwnd

{

public class Win32API

{

[DllImport("user32.dll ", CharSet = CharSet.Unicode)]

public static extern IntPtr PostMessage(IntPtr hwnd, int wMsg, string wParam, string lParam)

}

}

窗体程念搭序(发送消息):

using System

using System.Collections.Generic

using System.ComponentModel

using System.Data

using System.Drawing

using System.Linq

using System.Text

using System.Windows.Forms

using System.Runtime.InteropServices

namespace TestHwnd

{

public partial class Main : Form

{

//定义了一个子窗体的句柄

public IntPtr hwndfrmTest

public Main()

{

InitializeComponent()

}

private void timer1_Tick(object sender, EventArgs e)

{

if(hwndfrmTest!=(IntPtr)0)

{

if(DateTime.Now.Second % 3 == 0)

{

Win32API.PostMessage(hwndfrmTest, 0x60, "", "")

}

if(DateTime.Now.Second % 5 == 0)

{

Win32API.PostMessage(hwndfrmTest, 0x61, "", "")

}

}

}

void Button2Click(object sender, EventArgs e)

{

frmTest frm=new frmTest()

frm.Show(this)

}

}

子窗体程序(接仔早拿收消息)

using System

using System.Drawing

using System.Windows.Forms

namespace TestHwnd

{

/// <summary>

/// Description of frmTest.

/// </summary>

public partial class frmTest : Form

{

Main main

public frmTest()

{

//

// The InitializeComponent() call is required for Windows Forms designer support.

//

InitializeComponent()

//

// TODO: Add constructor code after the InitializeComponent() call.

//

}

void FrmTest_Load(object sender, EventArgs e)

{

main = this.Owner as Main

//初始化该窗体的句柄

main.hwndfrmTest = this.Handle

}

///重写窗体的消息处理函数DefWndProc,从中加入自己定义消息 MYMESSAGE 的检测的处理入口

protected override void DefWndProc(ref Message m)

{

switch (m.Msg)

{

case 0x60:

{

label1.ForeColor=Color.Red

label1.Text = DateTime.Now.ToString() + "-" + "测试成功。。。。,呵呵,变红了"

}

break

case 0x61:

{

label1.ForeColor=Color.Blue

label1.Text = DateTime.Now.ToString() + "-" + "测试成功。。。。,呵呵,变蓝了"

}

break

default:

base.DefWndProc(ref m)

break

}

}

void Button1Click(object sender, EventArgs e)

{

main.hwndfrmTest = (IntPtr) (0)

this.Close()

}

}

}

1、表:是存于电脑的原始数据

2、查询:将大而复杂的表,通过给定条件,从表中筛选出来,并按照一定的结构输出到指定的消敬差设备,这是我们平时最想要的结果。

3、窗体:是用来人机对话的窗口,是一个程序模块的集合,将所有的程序命令集成到窗体的各个控件中,通过他可以很简单地完成 *** 作任务。他可含有表,查询,命令按钮,文本框...等等。

4、报表:是将数据按照用户的要求格式进行输出的程序模块,可以通过打印机打印出来。也可以通过屏幕预览。

5、宏:可理解为:用户 *** 作命令的集合稿知。

6、模块:完成一定目标的程序。可以是一段代码,也可以是一个窗体拿皮。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8205066.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存