当前位置: 首页 > news >正文

电商网站开发图书seo搜索优化邵阳

电商网站开发图书,seo搜索优化邵阳,阿里巴巴装修网站,做h5网站设计https://www.exyb.cn/news/show-280348.html 在用.NET Framework框架的WinForm构建GUI程序界面时,如果要在控件的事件响应函数中改变控件的状态,例如:某个按钮上的文本原先叫“打开”,单击之后按钮上的文本显示“关闭”&#xff0…

https://www.exyb.cn/news/show-280348.html

在用.NET Framework框架的WinForm构建GUI程序界面时,如果要在控件的事件响应函数中改变控件的状态,例如:某个按钮上的文本原先叫“打开”,单击之后按钮上的文本显示“关闭”,初学者往往会想当然地这么写:

void ButtonOnClick(object sender,EventArgs e)

{

    button.Text="关闭";

}

这样的写法运行程序之后,可能会触发异常,异常信息大致是“不能从不是创建该控件的线程调用它”。注意这里是“可能”,并不一定会触发该种异常。造成这种异常的原因在于,控件是在主线程中创建的(比如this.Controls.Add(...);),进入控件的事件响应函数时,是在控件所在的线程,并不是主线程。在控件的事件响应函数中改变控件的状态,可能与主线程发生线程冲突。如果主线程正在重绘控件外观,此时在别的线程改变控件外观,就会造成画面混乱。不过这样的情况并不总会发生,如果主线程此时在重绘别的控件,就可能逃过一劫,这样的写法可以正常通过,没有触发异常。

正确的写法是在控件响应函数中调用控件的Invoke方法(其实如果大家以前用过C++ Builder的话,也会找到类似Invoke那样的激活到主线程的函数)。Invoke方法会顺着控件树向上搜索,直到找到创建控件的那个线程(通常是主线程),然后进入那个线程改变控件的外观,确保不发生线程冲突。正确写法的示例如下:

void ButtonOnClick(object sender,EventArgs e)

{

    button.Invoke(new EventHandler(delegate

    {

        button.Text="关闭";

    }));

}

Invoke方法需要创建一个委托。你可以事先写好函数和与之对应的委托。不过,若想直观地在Invoke方法调用的时候就看到具体的函数,而不是到别处搜寻的话,上面的示例代码是不错的选择。

这样的写法有一个烦人的地方:对不同的控件写法不同。对于TextBox,要TextBoxObject.Invoke,对于Label,又要LabelObject.Invoke。有没有统一一点的写法呢?

主窗口类本身也有Invoke方法。如果你不想对不同的控件写法不一样,可以全部用this.Invoke:

void ButtonOnClick(object sender,EventArgs e)

{

    this.Invoke(new EventHandler(delegate

    {

        button.Text="关闭";

    }));

}

在C# 3.0及以后的版本中有了Lamda表达式,像上面这种匿名委托有了更简洁的写法。.NET Framework 3.5及以后版本更能用Action封装方法。例如以下写法可以看上去非常简洁:

void ButtonOnClick(object sender,EventArgs e)

{

    this.Invoke(new Action(()=>

    {

        button.Text="关闭";

    }));

}

以上写法往往充斥着WinForm构建的程序。

在微软新一代的界面开发技术WPF中,由于界面呈现和业务逻辑原生态地分开在两个线程中,所以控件的事件响应函数就不必Invoke了。但是,如果手动开辟一个新线程,那么在这个新线程中改变控件的外观,则还是要Invoke的。

http://www.yidumall.com/news/97047.html

相关文章:

  • 规划和设计一个网站百度网盘客服在线咨询
  • 企业网站招聘可以怎么做搜索引擎广告案例
  • 新疆建设兵团发改委网站官网百度网站名称和网址
  • 南宁高端网站建设公司杭州优化商务服务公司
  • 深圳贸易网站开发免费seo教程
  • 网站开发流程及顺序第三方网络营销平台有哪些
  • php网站开发实例教程书百度网站推广关键词怎么查
  • 怎样免费给自己的公司做网站水果网络营销策划方案
  • 做老电影网站侵权吗什么是搜索推广
  • 加盟类网站建设seo网络推广培训班
  • 有哪些学做衣服的网站有哪些竞价系统
  • 个人开发app需要多少钱seo推广软件排名
  • 个人网站需要多大空间营销推广软文案例
  • 怎么做移动端的网站电脑编程培训学校哪家好
  • 做网站图片的大小百度快照怎么没有了
  • 成都网站制作网站设计怎么在百度上发布信息
  • 云南高端建设网站seo管理
  • 专业团队怎样建设网站2022年最火文案
  • axure可以直接做网站卖链接的网站
  • 大庆公司做网站培训心得体会2000字
  • 成都网站建设公司排行seo推广优化服务
  • 国际 网站制作公司seo工资一般多少
  • 我想自己做网站seo什么意思
  • 绵阳网站建设优化seo服务公司上海
  • 景安 怎么把网站做别名seo搜索引擎优化知乎
  • 会设计网站怎么做兼职百度推广手机登录
  • 太原百度做网站多少钱网络营销运营推广
  • 用手机能创建网站吗顶尖文案
  • 企业策划营销中心谷歌推广优化
  • 注册网站多久seo站点是什么意思