搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
小惠珠哦
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
CCF的A类期刊和会议有哪些?人工智能顶会ACL,ICML,NeurIPS,ICLR论文投稿时间以及影响因子等_ccfa类期刊
2
机器学习与高维信息检索 - Note 1 - 信息检索、机器学习与随机变量_高维信息搜索
3
【Oracle】玩转Oracle数据库(三):数据库的创建和管理_oracle 创建数据库
4
云计算的技术发展趋势_云计算技术的发展趋势
5
Mac上如何安装Mysql5以及可视化工具navicat_可视化工具navicatmac 版
6
map中的value保存遇到的问题_map里面的value可以放数组吗
7
Vue使用socket实现实时通信
8
FIR带通滤波器设计与验证_带通滤波器 csdn
9
FIFO设计笔记(双口RAM、同步FIFO、异步FIFO)Verilog及仿真_双口异步ram空满判断的方法
10
案例115:基于微信小程序的音乐播放器的设计与实现
当前位置:
article
> 正文
关于c#webform 通用变量的几种办法_webform全局数据
作者:小惠珠哦 | 2024-07-26 13:48:16
赞
踩
webform全局数据
一、C#中的全局变量
C#中没有了像VB.Net中的全局变量,那么我们如何实现在不同的页面间传递参数呢?
下面举例说明如何实现这一功能.
1.新建一个项目.
2.在该工程中添加一个窗体Form1.
3.在该窗体中定义静态型字符串变量myTestStr1:
public static string myTestStr1="";
4.在该窗体的构造函数中对该变量进行赋值,并为该窗体类添加属性GetStrValue.
public Form_Form1()
{
InitializeComponent();
myTestStr1="Hello!";
}
public string GetStrValue
{
get
{
return myTestStr1;
}
set
{
myTestStr1=value;
}
}
5.在该工程中另添加一个窗体Form2.
6.在Form1窗体上添加一个button按钮(name:but_Test);
7.在Form1窗体的but_Test_Click 事件中添加以下代码:
private void but_Test_Click(object sender, System.EventArgs e)
{
Form2 frm1=new Form2();
frm1.ShowDialog(this) ;
frm1.Close();
}
8.在Form2窗体上添加一个button按钮(name:but_Yes);
9.在Form1窗体的but_Yes_Click 事件中添加以下代码:
private void but_Yes_Click(object sender, System.EventArgs e)
{
MessageBox.Show (Form_Form1.myTestStr1 ); //直接访问. 显示.结果:" Hello!"
Form_Form1 frm2=new Form_Form1();
frm2.GetStrValue ="How do you do?"; //生成一个新的实例对该静态变量进行操作(修改该静态变量的值).
MessageBox.Show (frm2.GetStrValue ); //通过该实例的内部成员对它进行访问 .显示.结果: How do you do?"
MessageBox.Show (Form_Form1.myTestStr1 ); //直接访问. 显示.结果:" How do you do?"
}
二、在Windows窗体开发中使用Cache
Cache在程序设计时可以带来很大的便利,这点想必在web程序开发中大家都有深刻的体会!同样,在windows程序设计中也可以使用它。
使用时需要将web引用添加到窗体项目的引用中,下面以一个实例介绍之!
首先要将程序的Main()函数放在一个添加的类里,这里就是AppMain类。下面是AppMain类的代码:
using System;
using System.Threading;
using System.Web;//添加引用
using System.Web.Caching; //添加引用
using System.Windows.Forms;
namespace WindowsApplication1
{
public class AppMain
{
private static HttpRuntime _httpRuntime;
public static Cache Cache
{
get
{
EnsureHttpRuntime();
return HttpRuntime.Cache;
}
}
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private static void EnsureHttpRuntime()
{
if( null == _httpRuntime )
{
try
{
Monitor.Enter( typeof( AppMain ) );
if( null == _httpRuntime )
{
// Create an Http Content to give us access to the cache.
_httpRuntime = new HttpRuntime();
}
}
finally
{
Monitor.Exit( typeof( AppMain ) );
}
}
}
}
}
然后在Form1窗体中定义和使用Cache,代码如下:
using System;
using System.Web;//添加引用
using System.Web.Caching; //添加引用
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace WindowsApplication1
{
///<summary>
/// Form1 的摘要说明。
///</summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.TextBox txtValueToPutInCache;
private System.Windows.Forms.TextBox txtValueInCache;
private System.Windows.Forms.Button btnPutInCache;
private System.Windows.Forms.Button btnGetFromButton;
private const string CACHE_KEY = "APPCACHEKEY";
///<summary>
/// Required designer variable.
///</summary>
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
//
// TODO: Add any constructor code after InitializeComponent call
//
}
///<summary>
/// Clean up any resources being used.
///</summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
///<summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
///</summary>
private void InitializeComponent()
{
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.txtValueToPutInCache = new System.Windows.Forms.TextBox();
this.txtValueInCache = new System.Windows.Forms.TextBox();
this.btnPutInCache = new System.Windows.Forms.Button();
this.btnGetFromButton = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(8, 16);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(113, 16);
this.label1.TabIndex = 0;
this.label1.Text = "Value to put in cache:";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(8, 40);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(95, 16);
this.label2.TabIndex = 1;
this.label2.Text = "Value from cache:";
//
// txtValueToPutInCache
//
this.txtValueToPutInCache.Location = new System.Drawing.Point(128, 16);
this.txtValueToPutInCache.Name = "txtValueToPutInCache";
this.txtValueToPutInCache.Size = new System.Drawing.Size(200, 20);
this.txtValueToPutInCache.TabIndex = 2;
this.txtValueToPutInCache.Text = "";
//
// txtValueInCache
//
this.txtValueInCache.Location = new System.Drawing.Point(128, 40);
this.txtValueInCache.Name = "txtValueInCache";
this.txtValueInCache.ReadOnly = true;
this.txtValueInCache.Size = new System.Drawing.Size(200, 20);
this.txtValueInCache.TabIndex = 3;
this.txtValueInCache.Text = "";
//
// btnPutInCache
//
this.btnPutInCache.Location = new System.Drawing.Point(352, 16);
this.btnPutInCache.Name = "btnPutInCache";
this.btnPutInCache.Size = new System.Drawing.Size(104, 23);
this.btnPutInCache.TabIndex = 4;
this.btnPutInCache.Text = "Put in Cache";
this.btnPutInCache.Click +=
new System.EventHandler(this.btnPutInCache_Click);
//
// btnGetFromButton
//
this.btnGetFromButton.Location = new System.Drawing.Point(352, 40);
this.btnGetFromButton.Name = "btnGetFromButton";
this.btnGetFromButton.Size = new System.Drawing.Size(104, 23);
this.btnGetFromButton.TabIndex = 5;
this.btnGetFromButton.Text = "Get from Cache";
this.btnGetFromButton.Click +=
new System.EventHandler(this.btnGetFromButton_Click);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(488, 133);
this.Controls.Add(this.btnGetFromButton);
this.Controls.Add(this.btnPutInCache);
this.Controls.Add(this.txtValueInCache);
this.Controls.Add(this.txtValueToPutInCache);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
}
#endregion
private void btnPutInCache_Click(object sender, System.EventArgs e)
{
AppMain.Cache.Insert(
CACHE_KEY,
txtValueToPutInCache.Text,
null,
Cache.NoAbsoluteExpiration,
TimeSpan.FromSeconds( 60 ) );
}
private void btnGetFromButton_Click(object sender, System.EventArgs e)
{
string value;
value = AppMain.Cache[ CACHE_KEY ] as string;
if( null == value )
{
value = "[No value in the cache.]";
}
txtValueInCache.Text = value;
}
}
}
三、windows form参数传递过程
在Windows 程序设计中参数的传递,同样也是非常的重要的。
这里主要是通过带有参数的构造函数来实现的,
说明:Form1为主窗体,包含控件:文本框textBoxFrm1,多选框checkBoxFrm1和按钮buttonEdit;
Form2为子窗体,包含控件:文本框textBoxFrm2,多选框checkBoxFrm2和按钮buttonOK,buttonCancel。
当我们新建一个窗体的时候,设计器会生成默认的构造函数:
public Form2()
{
InitializeComponent();
}
它不带参数,既然我们要把Form1中的一些数据传到Form2中去,为什么不在Form2的构造函数里做文章呢?
假设我们要实现使Form2中的文本框显示Form1里textBoxFrm1的值,修改子窗体的构造函数:
public Form2(string text)
{
InitializeComponent();
this.textBoxFrm2.Text = text;
} 增加Form1中的修改按钮点击事件,处理函数如下:
private void buttonEdit_Click(object sender, System.EventArgs e)
{
Form2 formChild = new Form2(this.textBoxFrm1.Text);
formChild.Show();
}
我们把this.textBoxFrm1.Text作为参数传到子窗体构造函数,以非模式方式打开,这样打开的formChild的文本框就显示了”主窗体”文本,是不是很简单,接下来我们传一个boolean数据给子窗体。
Public Form2(string text,bool checkedValue)
{
InitializeComponent();
this.textBoxFrm2.Text = text;
this.checkBoxFrm2.Checked = checkedValue;
}
private void buttonEdit_Click(object sender, System.EventArgs e)
{
Form2 formChild = new Form2(this.textBoxFrm1.Text,this.checkBoxFrm1.Checked);
formChild.Show();
}
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/小惠珠哦/article/detail/885635
推荐阅读
article
ASP
.
NET
基础与入门:
WebForm
,
事件驱动
编程,
Page
类_
web
page
和
web
fr...
注:因为这个暑假做了一个
ASP
.
NET
的项目(
WebForm
s模式),暑假期间太忙没有来得及整理,现在统一梳理下知识(有...
赞
踩
article
Asp.Net
WebForm
Rdlc
报表
的使用_reportviewer15.
0.0
.0...
开发工具 VS2017一、项目创建1、创建 .Net项目2、创建
报表
文件目录项目创建完成后,创建如下的文件夹目录 rdl...
赞
踩
article
WebForm
、
WinForm
、
Win32
、asp.
net
、C#、.NET Framework和.n...
一、
WebForm
、
WinForm
、
Win32
之间关系1.
WebForm
WebForm
是.
net
中用于开发
web
应用的...
赞
踩
article
WebForm
:毒药
还是
利器?_
asp
net
webform
还有
人学吗...
版权声明:原创作品,如需转载,请与作者联系。否则将追究法律责任。 一、Webform的诞生及运行机制,web开发带来...
赞
踩
article
WebForm
小
项目
【
人员
管理系统
】分析...
简单的
人员
管理系统
展示页面 添加
人员
--判断添加
人员
的各种条件限制 -- 各种提示 修改
人员
信息 --
人员
原...
赞
踩
article
Web
窗体(
Web
Form
)...
一.简介0. 页面的生命周期。1.
Web
Form
后台页面类继承于Page类,Page类实现了IHttpHandler接...
赞
踩
article
WebForm...
WebForm什么是ASP.NETASP.NET指的是动态服务器页面(Active Server Pages),运行在I...
赞
踩
article
c#
webform
制作网页应用
的
思路
login
登录
_
c#
webform
...
制作一个
webform
的
信息科工单登记查询网页,虽然目前还是很多bug,虽然代码都是复制
的
,我要一步一步,走到最高,我要...
赞
踩
article
C#
WebForm
...
什么是
WebForm
常用控件。
WebForm
控件是如何解析成为HTML表单的。
WebForm
优点。
WebForm
缺点。我...
赞
踩
相关标签
asp.net
webform
c#
ui
javascript
ViewUI
数据库
java
web
C# .NET Framework