• C#改变变量触发事件 2016-01-06 17:04:56
    在实际应用中,很多时候都要做监视机制。最常见的比如一个按钮的Chick方法。在VS2005中,控件的监视已经帮我们...但是如果碰到某个变量,需要监视呢?   首先来初始化一个最简单的变量   private int

    转自:http://blog.csdn.net/qyc898/article/details/5740592

    在实际应用中,很多时候都要做监视机制。最常见的比如一个按钮的Chick方法。在VS2005中,控件的监视已经帮我们定义好了,我们只需要在方法里面写代码就可以。但是如果碰到某个变量,需要监视呢?

     

    首先来初始化一个最简单的变量 

        private int myValue=0;

        public int MyValue
        {
            
    get { return myValue; }
            
    set 
            {
                
    //如果赋的值与原值不同
                if (value!=myValue)
                {

                //就触发该事件!
                    WhenMyValueChange();
                }

                //然后赋值!
                myValue 
    = value; 
            }
        }

     

        //触发事件

        private void WhenMyValueChange()
        {
                 ???
        }

    看到这里可能你觉得已经可以了,但其实不是这样的。这样写,只有等这个触发事件执行完毕后才会给myValue赋值。这就意味着你在执行这个触发事件时,会发现原来变量还没有变,这就会导致意想不到的错误。所以不能直接在WhenMyValueChange()写动作,而是应该利用它来触发另一个方法,而这个方法会独立进行,不会影响到myValue的赋值。这就是真正意义上的变量值改变时触发了。

     

     

    现在我再定义一个方法体:


        //变量改变后触发
        private void afterMyValueChanged()
        {

            
    //do something

        }

     

    那么怎么用WhenMyValueChange()去触发afterMyValueChanged(),并且让afterMyValueChanged()独立进行呢?

        //定义一个委托
        public delegate void MyValueChanged(object sender, EventArgs e);
        
    //与委托相关联的事件
        public event MyValueChanged OnMyValueChanged;

        //将afterMyValueChanged的委托绑定到事件上

        OnMyValueChanged += new MyValueChanged(afterMyValueChanged);


     

     

    //在刚才的WhenMyValueChange中,触发该事件

        private void WhenMyValueChange()
        {
                 if (OnMyValueChanged != null)

            {

                OnMyValueChanged(thisnull);

            }

        }


    展开全文
  • c#修改环境变量,不重启电脑生效,已测试,可以成功应用
  • C#字符串变量使用 2019-06-24 18:34:46
    string由于是引用类型,所以,声明的字符串变量会存储到堆上,而且该变量是不可变的,一旦初始化了该变量,该内存区域中存储的内容将不能更改。在对字符串操作时,是在堆上创建了一个新的字符串变量,并将新的字符串...
  • 在平时编程中,我们总是想着监控一个变量的值,当它的值到达一定条件时,我们就执行一些操作。虽然我们在Unity的Update()函数中时刻监控也能达到这样的效果,但是太浪费效率了,因为那样每帧都会执行一次判断和...
  • 在手动增加系统环境变量后,会自动刷新系统环境变量,但是当我们的程序通过API修改后,系统还是旧的环境,通过cmd去访问是找不到的,此时要通过一些手段去刷新. 首先系统环境变量对应注册表是HKEY_LOCAL_MACHINE\SYSTEM\...
  • C# 异步控件集中刷新 2019-09-19 23:40:21
    UI中手会迂回一下,比如C#中的delegate调用刷新进度条的经典案例。然后照葫芦画瓢每个控件都搞个delegate,非常不优雅。 例如之前这篇博文里总结的方法:https://blog.csdn.net/lonelyrains/articl...
  • string sPath = Environment.GetEnvironmentVariable("SAP_CODEPAGE"); //获取环境变量    if (sPath != "8400")   {  System.Environment.SetEnvironmentVariab
  • C#刷新当前窗体 2017-06-12 20:23:25
    最近找刷新窗口的办法看了好多,总觉得有些不好理解,然后自己就想了个办法: 点击刷新刷新按钮后,把控件全部移除,嗯~用的是this.Controls.Clear();,直接移除了窗口中的所有控件,然后在下面执行一次窗口构造...
  • 然后运行“DOS命令提示符”或run cmd,假设要修改PATH变量,不管PATH的原值是什么,在DOS窗口直接把PATH修改为任意值,如:输入:set PATH=C:,关闭DOS窗口。 再次打开DOS窗口,输入:echo %PATH% ,这时可以发现,...
  • 点击button中,就会发生页面的刷新,我之前定义的全局变量中的数值就会消失,从而报错,解决这个问题的方法是: 在页面中定义几个hidden类型的文本控件来存放相应的全局变量值,如 这样将在后台中通过hid1.value...
  • 今天我要修改其中的某个变量修改完后将编译好的.class文件更新到了服务器上,但是重启服务器后发现始终没有变化,还是以前的值。我就将服务器的缓存清理,然后再重启,依然没有改变。反反复复又更新上去,又清理...
  • !... Respose response = new Respose(); response.body.authentication.useraccount = "18857475598";这样赋值赋不进去,提示未将对象引用设置到对象的实例。 本人新手,求解应该怎么赋值才能赋值进去
  • 写了一个读取数据库数据的方法。 public static double getPlanV(int type) { return (db.PlanV.Count(c => c....我重新打开程序,读取的就是正确的,可修改数据值后,timer里读取的还是老值。。 求高手指点一下。
  • 在窗体的多线程环境下可能出现某个线程循环或者死循环的情况下,窗体或控件出现假死不刷新状态。大多数这种情况可以使用以下方法解决: Application.DoEvents(); 示例: //某个导致界面假死的循环 while (true)...
  • 第一种方法: 用委托,Form2和Form3是同一组 Form2 <br />C#代码 using System;  using System.Collections.Generic;  using System.ComponentModel;  using System....
  • WPF的数据绑定功能非常强大,在控件中使用数据绑定功能会为你节省大量的处理...本示例中,将一个变量绑定到一个控件上,在代码中改变变量值,并立刻引起控件值的变化。此代码经过删减,仅仅保留精简内容,一看就懂。
  • 变量用volatile修饰 volatile boolean keepRunning;  
  • WinFrom 程序近期遇到一个Sqlserver 2008评估版本到期的问题,解决这个问题的时候,需要在注册表 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SQL Server/100/ConfigurationState 下修改 CommonFiles 值为 3 ...
  • 问题描述:Winfrom中某些控件(下面以ListBox为例)绑定List数据源,第一次绑定上去之后,后面更改List集合数据以后,ListBox并没有自动更新到UI上面。可能大家已经知道,如果 ListBox的数据源是 DataTable 则是可以...
  • @Config.GetMobileVerifyCodeInterval 变量用来保存多久可以重新获取,写在C#的配置文件中 首先再搞几个标签 控制cookie的js,用来在浏览器中保持计时: function addCookie(name, value, expiresHours) { ...
1 2 3 4 5 ... 20
收藏数 8,740
精华内容 3,496