今天在实验delegate与thread 在初步的实验结束后,因为原来的delegate只有一个函数会被调用,感觉没有达到delegate的极致,所以又重新自己定义了一个delegate,在另一个线程 运行时调用这个delegate,其中有两个函数会被顺序调用. 一开始写的很顺利,点击运行.生成第二个线程后,突然报出异常.说是不能再控件创建的线程外调用这个控件的属性. 于是有些奇怪,因为只是加入了一个不痛不痒的函数而已. 回溯,发现问题. 原来原来调用delegate,是通过控件的invoke方…
C#中利用委托实现多线程跨线程操作 - 张小鱼 2010-10-22 08:38 在使用VS2005的时候,如果你从非创建这个控件的线程中访问这个控件或者操作这个控件的话就会抛出这个异常.这是微软为了保证线程安全以及提高代码的效率所做的改进,但是也给大家带来很多不便.其实解决这个问题有两种方法:一,是通过设置System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;在你的程序初始化的时候设置了这个属性,而且在你的控件…
http://bbs.csdn.net/topics/390162519 事实上,本文内容很简单且浅显,所以取消前戏,直接开始.. 源代码:在本文最后 这里是一张动画,演示在多线程(无限循环+Thread.Sleep)情况下主界面操作不受影响. 多线程是一种提高程序运行效率和性能的常用技术.随着我们学习工作的深入,在编程中或多或少会涉及到需要多线程的情况.多数时候,我们的操作模式是后台线程中处理数据,计算结果,然后在前台界面(GUI)中更新显示. 在.NET Framework中,为了保证线程安…
解决方案就是使用代理,在代理中调用主线程的方法来控制控件 /// <summary> /// 声明代理 /// </summary> delegate void SetTextCallBack(string text); /// <summary> /// 代理函数,在线程中使用 /// </summary> private void Tip(string text) { //判断主线程的控件是否需要使用代理来访问 if (this.tbTip.Invoke…
起因:在进行退出的时候,控件属性显示为不可显示,于是在界面上是不可以点击的,如果想点击这个按钮,只能通过修改控件属性,进行点击 上图看控件,正常来说,点击坐边的用户名,下拉会出现一个logout,退出按钮,这时请注意看, ul显示是一个none,是控件不显示 2.在把鼠标放入到用户名上,就会显示是显示模式,block,这个时候就可以点击 针对这种可变状态,你不知道他什么时候变化,最好的方法,就是在测试的时候修改它的状态,让他保持是显示,才方便测试,使用js方法修改它属性 针对css定位方式操作…
2.23 js处理日历控件(修改readonly属性) 前言    日历控件是web网站上经常会遇到的一个场景,有些输入框是可以直接输入日期的,有些不能,以我们经常抢票的12306网站为例,详细讲解如何解决日历控件为readonly属性的问题.    基本思路:先用js去掉readonly属性,然后直接输入日期文本内容一.日历控件    1.打开12306的车票查询界面,在出发日期输入框无法直接输入时间    2.常规思路是点开日历控件弹出框,从日历控件上点日期,这样操作比较烦躁,并且我们测试的…
在做界面程序时,常常需要一些数据类,界面元素通过绑定等方式显示出数据,然而由于UI线程不是线程安全的,一般都需要通过Invoke等方式来调用界面控件.但对于数据绑定bindingList而言,没法响应listchang事件,导致后端的grid等控件不能更新数据.废了好大的劲终于找到一个UIBindingList,实现线程数据的同步! using System; using System.ComponentModel; using System.Threading; using System.Wi…
Django 中利用ModelForm 可以快速地利用数据库对应的Model 子类来自动创建对应表单. 例如: from django.db import models from django.forms import ModelForm class Book(models.Model): name = models.CharField(max_length=100) authors = models.ManyToManyField(Author) class BookForm(ModelFor…
http://blog.sina.com.cn/s/blog_4dfbd07c01000a81.html 将字符串映射为Delphi控件名,批量修改控件属性 (2007-10-08 14:50:51) 转载▼ 标签: 知识/探索 分类: Delphi Study 假定有一批TRzCheckBox控件,控件名从Chk_Bit0 ... Chk_Bit19, 想要将其Enabled属性全部改为 True,则可以采用如下形式快速实现. Uses   Classes:        for i := 0…
最简单的方法(不推荐): 在窗体构造函数中写Control.CheckForIllegalCrossThreadCalls =false; 为什么不推荐上面的方法: 为避免空间造成死锁, .net framework 2.0 之后 拒绝多线程访问空间, 以前Control.CheckForIllegalCrossThreadCalls 默认就是flase, 2.0后默认为true.当然如果能保证程序中不会好几个线程同时操作一个控件用上面的方法也可以, 如果存在多个线程一起操作控件使用下面的方法;…