精华内容
下载资源
问答
  • 代码如下,多线程给全局变量a复制,在线程中a的值确实是等于“abc”但是线程结束后,a的值就丢失了! Public Class Class1 Public a As String '全局变量 Dim myThread As Threading.Thread ‘线程 ...
  • vb6,类模块,声明一个全局变量如何赋值? 要求打开窗体时就已经赋值了 Option Explicit Public IsGameBox As Boolean 'Set IsGameBox = True'这种报错 Private Sub Form_Load()'这种不执行 MsgBox ("1") ...
  • 这段时间一直在维护VB6编写的《全站仪距离精度测试》软件,由于新需求中新增两个基线,并且每条基线的棱镜间距并不一样,因此我使用了一个boolean型的全局变量,并且设计在某按钮点击事件中给全局变量赋值,在这里我...

        这段时间一直在维护VB6编写的《全站仪距离精度测试》软件,由于新需求中新增两个基线,并且每条基线的棱镜间距并不一样,因此我使用了一个boolean型的全局变量,并且设计在某按钮点击事件中给全局变量赋值,在这里我并没有考虑到全局变量初始化的问题,当然该变量是否初始化对程序本身完全没有影响。

       然而,正是由于我没有对全局变量初始化的敏感度,导致后来问题的出现,原因是我希望软件能够做的更好一些,防止基线一旦被人挡住就会出现数据错误的现象,所以我又加了一个全局变量用于存放每一次测距的值,那么每次测距的时候,我就将测距值与全局变量(上一次测距的至)进行比较,通过分析两个数值的差距,来自动判数据是否有效,修改完软件后,测试了一下,的确是解决了被人挡住导致数据错误的问题,然而新问题出现了,当我重复使用一遍软件时,竟然没法显示数据,程序也一直停留不动,搞不懂是什么原因导致的,我又将问题复现了几次,突然意识到全局变量的问题,赶紧在使用全局变量之前,对其进行初始化操作,编译运行,问题得意解决。这时候才想起上次研发部开会时,老大说以后我们的软件的编码规则中必须遵循的一条“全局变量在使用前必须初始化!”

    在此,我再一次总结——全局变量在使用前必须初始化!

    转载于:https://www.cnblogs.com/Spacecup/p/3823037.html

    展开全文
  • 一、C#中的全局变量 <br />C#中没有了像VB.Net中的全局变量,那么我们如何实现在不同的页面间传递参数呢? 下面举例说明如何实现这一功能. 1.新建一个项目. 2.在该工程中添加一个窗体...

    一、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();
             }

    展开全文
  • C#中的"全局变量

    千次阅读 2005-07-14 14:32:00
    C#中没有了像VB.Net中的全局变量,那么我们如何实现在不同的页面间传递参数呢?下面举例说明如何实现这一功能.1.新建一个工程HeroClock.2.在该工程中添加一个窗体ClockSet.3.在该窗体中定义静态型字符串变量...

    C#中没有了像VB.Net中的全局变量,那么我们如何实现在不同的页面间传递参数呢?
    下面举例说明如何实现这一功能.
    1.新建一个工程HeroClock.
    2.在该工程中添加一个窗体ClockSet.
    3.在该窗体中定义静态型字符串变量myTestStr1:
      public static string myTestStr1="";
    4.在该窗体的构造函数中对该变量进行赋值,并为该窗体类添加属性GetStrValue.

       public Form_ClockSet()
      {
       //
       // Windows 窗体设计器支持所必需的
       //
       InitializeComponent();

       //
       // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
       //
       myTestStr1="frj nihao";
      }
     public string  GetStrValue
      {
       get
       {
        return myTestStr1;
       }
       set
       {
        myTestStr1=value;
       }

      }                                 
    5.在该工程中另添加一个窗体TimeSet.
    6.在ClockSet窗体上添加一个button按钮(name:but_Test);
    7.在ClockSet窗体的but_Test_Click 事件中添加以下代码:
    private void but_Test_Click(object sender, System.EventArgs e)
      {
       TimeSet frm1=new TimeSet();
       frm1.ShowDialog(this) ;
       frm1.Close();
     
      }
    8.在TimeSet窗体上添加一个button按钮(name:but_Yes);
    9.在ClockSet窗体的but_Yes_Click 事件中添加以下代码:
    private void but_Yes_Click(object sender, System.EventArgs e)
      {
       MessageBox.Show (Form_ClockSet.myTestStr1 );    //直接访问.  显示.结果:"frj nihao"

       Form_ClockSet frm2=new Form_ClockSet();
       frm2.GetStrValue ="hlk nihao";                                       //生成一个新的实例对该静态变量进行操作(修改该静态变量的值).
       MessageBox.Show (frm2.GetStrValue  );                     //通过该实例的内部成员对它进行访问  .显示.结果:"hlk nihao"
     
       MessageBox.Show (Form_ClockSet.myTestStr1 );   //直接访问. 显示.结果:"hlk nihao"


      }


    展开全文
  • C#中没有了像VB.Net中的全局变量,那么我们如何实现在不同的页面间传递参数呢? 下面举例说明如何实现这一功能. 1.新建一个项目. 2.在该工程中添加一个窗体Form1. 3.在该窗体中定义静态型字符串变量myTestStr1: ...
    一、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?"
              }

    转载于:https://www.cnblogs.com/myl0197/archive/2008/09/24/1297605.html

    展开全文
  • 关于c#webform 通用变量的几种办法

    千次阅读 2015-11-12 10:26:55
    C#中没有了像VB.Net中的全局变量,那么我们如何实现在不同的页面间传递参数呢?  下面举例说明如何实现这一功能.  1.新建一个项目.  2.在该工程中添加一个窗体Form1.  3.在该窗体中定义静态型字符串变量...
  • 有多种方法可以在窗口之间传递数据,比如: 1、在模块文件(Module)中声明一个全局公共变量,...2、在要传递数据的那个窗口声明一个模块级的全局变量,然后在其他窗体中就可以通过这个变量(要加上窗体名的引用)...
  • VB中用语句打开一个Excel获取其中的数据,并赋值给模块里的全局变量,如果修改了excel中的数据,再次读取文件,数据不会被更新;只有关闭程序再次运行才可以。 语句: 打开excel并获取变量 Public Sub GetValue()...
  • Public 在窗体的通用部分用Publ ic声明的是全局变量,整个工程都可以访问。 click 单击事件 dblclick 双击事件 load 在窗体加载的时候就已经有了(直接显示事件me.show) 【变量在左赋值数在右】空串也是字符串控件...
  • 接触黑客的同志们经常遇到,使用一些扫描工具扫描的时候,会得到一些缓冲区溢出的漏洞,但是怎么利用自己是一团雾水 网上很少有相关的工具,也很少有相关的文章,下面...我们给局部变量或者全局变量赋值时,变量的内存
  • C#中没有了像VB.Net中的全局变量,那么我们如何实现在不同的页面间传递参数呢? 下面举例说明如何实现这一功能. 1.新建一个项目. 2.在该工程中添加一个窗体Form1. 3.在该窗体中定义静态型字符串变量myTestStr1: ...
  •  C语言中,变量分为全局变量和局部变量;也可以这样分:自动变量,静态变量.前者是按变量作用范围来分的,而后者是按变量存储方式来分的.  如果按存储占用空间来分,可以是整型变量,字符型变量,浮点型变量等.当然还有...
  • RMReport 7

    2012-10-06 11:33:56
    a.RMVariables在RM_Class.pas中定义,是全局变量,这样定义后就可以在报表中使用变量"var1",例如: RMVariables['变量名称'] := Edit1.Text; b.用报表中数据字典,TRMReport.Dictionary.Variables,需要注意的是,...
  • 在一小时内学会 C#(txt版本)

    热门讨论 2009-08-19 18:09:37
    4. C# 中没有全局变量或全局函数,取而代之的是通过静态函数和静态变量完成的。 数据类型 所有 C# 的类型都是从 object 类继承的。有两种数据类型: 1. 基本/内建类型 2. 用户定义类型 以下是 C# 内建类型的...
  • 2.7.3 全局变量 79 2.7.4 静态变量 82 2.8 命名空间 83 2.8.1 声明命名空间 84 2.8.2 多个命名空间 86 2.9 C++/CLI编程 87 2.9.1 C++/CLI特有的基本数据类型 87 2.9.2 命令行上的C++/CLI输出 91 ...
  • 7.请编程遍历页面上所有TextBox控件并给它赋值为string.Empty? 答: foreach (System.Windows.Forms.Control control in this.Controls) { if (control is System.Windows.Forms.TextBox) { System.Windows....
  • C#微软培训教材(高清PDF)

    千次下载 热门讨论 2009-07-30 08:51:17
    7.3 赋值操作符和赋值表达式.64 7.4 关系操作符和关系表达式.65 <<page 2>> page begin==================== 7.5 逻辑操作符和逻辑表达式.68 7.6 位 运 算 .69 7.7 其它特殊操作符 .72 7.8 小 结 ....
  • C#微软培训资料

    2014-01-22 14:10:17
    7.3 赋值操作符和赋值表达式.64 7.4 关系操作符和关系表达式.65 <<page 2>> page begin==================== 7.5 逻辑操作符和逻辑表达式.68 7.6 位 运 算 .69 7.7 其它特殊操作符 .72 7.8 小 结 ....
  • 易语言5.1 相对于易语言5.0更新说明:  支持静态链接其它编程语言(如C/C++、汇编等)编译生成的静态库(.LIB或.OBJ),但仅限于COFF格式,支持cdecl和stdcall两种函数调用约定。  使用说明如下:函数声明和调用...

空空如也

空空如也

1 2
收藏数 27
精华内容 10
关键字:

vb全局变量赋值