C#中如何在两个窗体之间传递一个变量

wangsifan 2004-12-23 11:34:13
我建立了两个窗体form1,form2,在form1中定义了一个公有变量,
我想通过form2改变这个变量的值,我不想通过在窗体加载中添加参数,
怎么用才可以呢?
...全文
290 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
nga96 2004-12-23
  • 打赏
  • 举报
回复
对,变量,属性
epimetheus 2004-12-23
  • 打赏
  • 举报
回复
利用事件。是最好的办法。在子窗体中定义一个事件。子窗体需要传递给父窗体的数据,通过事件传递过去。这样特别灵活。
marvelstack 2004-12-23
  • 打赏
  • 举报
回复
http://blog.csdn.net/zhzuo/archive/2004/04/05/22027.aspx
shuaizhen 2004-12-23
  • 打赏
  • 举报
回复
在form2中定义:
form1 f =new form1;
f.公有变量=需要修改的内容;
这改变的并不是原来窗体的值了。
shuaizhen 2004-12-23
  • 打赏
  • 举报
回复
不行呀。我试过你们说的方法了。
wroxdo 2004-12-23
  • 打赏
  • 举报
回复
同意楼上的做法,但使用的时候要细心些

另外在使用公有变量的时候会破坏类的封装,建议用属性来做
earlsen 2004-12-23
  • 打赏
  • 举报
回复
在form2中定义:
form1 f =new form1;
f.公有变量=需要修改的内容;
vogts 2004-12-23
  • 打赏
  • 举报
回复
.aspx?code=88

request.quering('code')
kong19 2004-12-23
  • 打赏
  • 举报
回复
用静态变量或属性
hefanxinsky 2004-12-23
  • 打赏
  • 举报
回复
还可以使用系统的API函数

将下面两断代码各自编译成Form1.exe和Form2.exe文件 试一试

我也从网上看到的 在此谢过提供此代码的大侠了 呵呵
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;

public class Form1 : System.Windows.Forms.Form {
private System.Windows.Forms.Button button1;
private System.Windows.Forms.TextBox textBox1;

private System.ComponentModel.Container components = null;

[STAThread]
static void Main() {
Application.Run(new Form1());
}

public Form1()
{
InitializeComponent();
}
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

#region Windows 窗体设计器生成的代码
private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.textBox1 = new System.Windows.Forms.TextBox();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(32, 24);
this.button1.Name = "button1";
this.button1.TabIndex = 0;
this.button1.Text = "button1";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(32, 64);
this.textBox1.Name = "textBox1";
this.textBox1.TabIndex = 1;
this.textBox1.Text = "textBox1";
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(292, 266);
this.Controls.Add(this.textBox1);
this.Controls.Add(this.button1);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);

}
#endregion

private void button1_Click(object sender, System.EventArgs e) {
MessageBox.Show("This is button1 click!");
}
}


using System;
using System.Text;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Runtime.InteropServices;

public class TestForm1 : System.Windows.Forms.Form {
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Button button2;

private System.ComponentModel.Container components = null;

[STAThread]
static void Main() {
Application.Run(new TestForm1());
}

public TestForm1()
{
InitializeComponent();
}
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

#region Windows 窗体设计器生成的代码
private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.button2 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(32, 24);
this.button1.Name = "button1";
this.button1.TabIndex = 0;
this.button1.Text = "button1";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// button2
//
this.button2.Location = new System.Drawing.Point(32, 64);
this.button2.Name = "button2";
this.button2.TabIndex = 0;
this.button2.Text = "button2";
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// TestForm1
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(292, 266);
this.Controls.Add(this.button1);
this.Controls.Add(this.button2);
this.Name = "TestForm1";
this.Text = "TestForm1";
this.ResumeLayout(false);

}
#endregion

private void button1_Click(object sender, System.EventArgs e) {
IntPtr hwnd_win ;
IntPtr hwnd_button ;

hwnd_win = FindWindow("WindowsForms10.Window.8.app3","Form1");
hwnd_button = FindWindowEx(hwnd_win ,new IntPtr(0) ,"WindowsForms10.BUTTON.app3","button1");

const int BM_CLICK = 0x00F5;
Message msg = Message.Create(hwnd_button ,BM_CLICK ,new IntPtr(0),new IntPtr(0));
PostMessage(msg.HWnd ,msg.Msg ,msg.WParam ,msg.LParam);
}
private void button2_Click(object sender, System.EventArgs e) {
const int WM_CHAR = 0x0102;
IntPtr hwnd_win ;
IntPtr hwnd_textbox ;

hwnd_win = FindWindow("WindowsForms10.Window.8.app3","Form1");
hwnd_textbox = FindWindowEx(hwnd_win ,new IntPtr(0) ,"WindowsForms10.EDIT.app3","textBox1");

string strtext = "测试aaa";
UnicodeEncoding encode = new UnicodeEncoding();
char[] chars = encode.GetChars(encode.GetBytes(strtext));
Message msg ;
foreach (char c in chars ) {
msg = Message.Create(hwnd_textbox ,WM_CHAR ,new IntPtr(c),new IntPtr(0));
PostMessage(msg.HWnd ,msg.Msg ,msg.WParam ,msg.LParam);
}
}

[DllImport("user32.dll")]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

[DllImport("user32.dll")]
public static extern IntPtr FindWindowEx(IntPtr hwndParent,IntPtr hwndChildAfter,string lpszClass,string lpszWindow);

[DllImport("user32.dll",CharSet=CharSet.Unicode)]
public static extern IntPtr PostMessage(IntPtr hwnd,int wMsg,IntPtr wParam,IntPtr lParam);
}
hefanxinsky 2004-12-23
  • 打赏
  • 举报
回复
可以是void Form1_Activated(object sender, EventArgs e)函数

也就是窗体的Activated事件 (当使用代码或者用户被激活窗体时发生)
shuaizhen 2004-12-23
  • 打赏
  • 举报
回复
通过修FROM2的构造函数,并传一个引用类型的参数即可.
我想在关闭FRom2时才修改参数怎么办?
pingnt 2004-12-23
  • 打赏
  • 举报
回复
通过修FROM2的构造函数,并传一个引用类型的参数即可.
silversnowjing 2004-12-23
  • 打赏
  • 举报
回复
在form2中定义:
form1 f =new form1;
f.公有变量=需要修改的内容;
这改变的并不是原来窗体的值了。
  这样可以,我试过了,建议楼主细心一点尝试
sandsboy 2004-12-23
  • 打赏
  • 举报
回复
用静态变量或属性
《5G通信GFDM技术的MATLAB模拟研究》 5G技术作为当前通信领域的核心技术,以其高速率、低时延和大连接能力,为智能交通、远程医疗等新兴应用场景提供了关键支撑。其,GFDM(广义滤波离散多音调)作为一种多载波调制方案,因其在资源分配上的灵活性和频谱利用率较高,受到广泛关注。该文件“Generalized-GFDM-Framework--master.rar”提供了基于MATLAB的GFDM算法实现,适合作为初学者了解5G通信技术的参考资料。 GFDM属于非正交多载波技术,其核心在于将时频资源组合为复数块,并通过滤波操作优化信号质量,从而降低干扰。相较于传统OFDM,GFDM在帧结构上更具适应性,能够更有效地应对信道变化,并在能效和频谱利用方面表现更优。MATLAB作为一款功能强大的计算与仿真平台,广泛应用于通信系统的开发与测试。 在MATLAB实现GFDM系统,需首先掌握其基本结构,包括信号生成、滤波器配置以及调制方式的设定等。该框架可能包含以下几个主要部分: 1. **信号生成**:通过子载波数据经过滤波处理后合成完整符号,涉及傅里叶变换、滤波器应用及子载波映射等操作。 2. **滤波器配置**:选择满足系统需求的滤波器,如低通、带通等,需考虑其阻带抑制、过渡带宽度等参数。MATLAB提供了多种滤波器设计方法,如fir1、equiripple等。 3. **调制映射**:根据不同的调制方式(如QAM、QPSK),生成对应的星座图,并将符号映射至各子载波。 4. **信道建模**:模拟无线信道的多径、衰落等现象,以评估系统在真实环境下的表现。 5. **接收处理**:包括滤波、FFT逆变换、信道估计与均衡等步骤,用于恢复发送的数据。 6. **性能分析**:通过误码率、频谱利用率等指标,评估系统在不同信道条件下的表现。 通过学习该MATLAB代码库,不仅能够理解GFDM的理论基础,还能通过实际编程加深对其工作机制的掌握,提高算法实现能力。其提到的“movewu2”和“wingggr”可能为特定函数或模块,具体功能需结合代码内容进一步分析。该资源为通信技术研究者和学习者提供了实践平台,有助于深入理解5G通信系统的GFDM技术,为后续研究与开发奠定基础。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
### 半导体行业标准合集:SEMI标准解析 #### 一、概述 SEMI(Semiconductor Equipment and Materials International)作为全球领先的行业协会之一,在半导体制造及相关领域内制定了广泛的标准和指南,旨在确保产品的互操作性、兼容性和安全性。本文将深入探讨SEMI E1-0697这一标准的重要内容——《3英寸、100毫米、125毫米及150毫米塑料和金属晶圆载体规格》。 #### 二、SEMI E1-0697标准详解 ##### 1. 标准范围与目标 SEMI E1-0697标准主要定义了用于加工和处理3英寸(约76.2毫米)、100毫米、125毫米及150毫米直径晶圆的塑料和金属载体的尺寸要求。该标准适用于各种类型的晶圆载体,并且分为两种分类: - **通用用途**:涵盖了3英寸、100毫米、125毫米及150毫米晶圆的尺寸。 - **自动运输用途**:特别针对自动化晶圆加工设备对接口的要求,适用于125毫米和150毫米晶圆的尺寸。 ##### 2. 尺寸要求 为了符合SEMI E1-0697标准,晶圆载体必须在规定的尺寸范围内制造,并且在按照制造商推荐的方法使用时保持尺寸稳定。这意味着载体的设计和制造必须满足严格的公差要求,以确保与自动化设备的良好配合以及晶圆的安全处理。 ##### 3. 安全考虑 虽然该标准未明确涉及安全问题,但在实际应用,晶圆载体的安全性至关重要。制造商应遵循相关的安全指南和规定,确保产品在整个生命周期内的安全性。 #### 三、SEMI标准体系 SEMI标准不仅限于晶圆载体的尺寸要求,还覆盖了广泛的领域,如: - **设备自动化硬件**:规范了半导体设备的机械部件和系统的标准化接口,以实现设备之间的无缝集成。 - **设备自动化软件**:定义了软件接口和通信协议,支持设备间的数据交换和控制。 - **设施**:包括了对半导体制造设施的设计、建设和维护的要求。 - **平板显示**:针对平板显示器生产过程的材料和工艺制定标准。 - **气体**:涉及到半导体制造过程使用的特殊气体的质量和安全要求。 - **材料**:涵盖了用于制造半导体器件的各种材料的标准。 - **光刻**:定义了光刻技术的关键参数和技术要求。 - **封装**:针对半导体器件的封装技术提供指导。 - **过程化学品**:制定了用于半导体制造过程的化学品的标准。 - **安全指南**:提供了关于半导体生产和使用过程的安全措施的建议。 - **硅材料与过程控制**:针对硅基半导体材料的特性和制造过程制定标准。 - **可追溯性**:确保半导体产品从原材料到成品的整个生命周期的可追溯性。 #### 四、结论 SEMI标准对于半导体行业的发展具有重要的意义,它不仅提高了设备和材料的兼容性与互操作性,还促进了行业的整体技术水平提升。通过实施这些标准,可以有效减少制造成本,提高生产效率,同时保证产品的质量和安全性。对于从事半导体制造的企业和个人来说,深入了解并遵循SEMI标准是至关重要的

111,110

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧