C# 跨线程访问窗体控件

这篇具有很好参考价值的文章主要介绍了C# 跨线程访问窗体控件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在不加任何修饰的情况下,C# 默认不允许跨线程访问控件,实际在项目开发过程中,经常使用跨线程操作控件属性,需要设置相关属性才能正确使用,两种方法设置如下:

方法1:告诉编译器取消跨线程访问检查,在窗体构造函数中编写,如下图所示:

C# 跨线程访问窗体控件,多线程的应用,c#,开发语言

方法2:设置所需的控件为跨线程访问即可

 this.textBox1.Invoke(new EventHandler(delegate  //访问主界面的控件
 {
     textBox1.Text = class1.MyProperty.ToString();

 }));

 示例代码如下:文章来源地址https://www.toymoban.com/news/detail-682123.html

   private void button1_Click(object sender, EventArgs e)
   {
       Task.Run(() =>  //开启线程
       {
           Class1 class1 = new Class1();
           while (true)
           {
               Thread.Sleep(100);
               class1.MyProperty = random.Next(210, 230);
               this.textBox1.Invoke(new EventHandler(delegate  //访问主界面的控件
               {
                   textBox1.Text = class1.MyProperty.ToString();
               }));
           }
       });
   }

到了这里,关于C# 跨线程访问窗体控件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C#中错误:线程间操作无效,从不是创建控件的线程访问它。

    一、原因分析 跨线程调用控件会出现这个错误的原因是因为:.NET禁止了跨线程调用控件, 否则谁都可以操作控件,最后可能造成错误。 所以不是在创建控件所在的线程内调用就会发生这样的错误。 二、解决办法 方法1:设置CheckForIllegalCrossThreadCalls =false 是能去掉这个检查的

    2024年02月15日
    浏览(26)
  • C#线程间操作无效:从不是创建控件“textbox1”的线程访问它

    在C#的多线程访问中,在线程间的相互访问时因为线程安全问题有访问限制,在创建一般线程时,对于界面元素访问时这样的问题比较常见。 比如,创建一个form1,上面放置一个textbox控件,创建一个线程去访问textbox,界面如下: 按钮buuton1的代码: 就是简单地创建一个线程,

    2023年04月09日
    浏览(32)
  • C# 解决 System.InvalidOperationException:“线程间操作无效: 从不是创建控件“...”的线程访问它。”

    方法1(不推荐):禁用跨线程检查 使用 Control.CheckForIllegalCrossThreadCalls = false; 例如: 方法2:使用委托 使用 Control 基类的 Invoke 或 BeginInvoke 方法,来执行禁止跨线程的代码。 例如: 或: 使用参数进行传递: 不使用 lambda 表达式的写法: 使用 BeginInvoke 方法的情形,与使用

    2024年02月12日
    浏览(33)
  • C#针对VS线程间操作提示:程间操作无效: 从不是创建控件“”的线程访问它的几种解决方法

    转载请标明出处:Python Excellent的博客 此为最基础方法 (入门级) 运行效果如图所示 * 先在按钮事件中创建一个Test1()线程 * 在测试1中有两种方法可以访问窗体线程(首推荐) public SynchronizationContext UiContext //第一步全局声明 UiContext = SynchronizationContext.Current; //第二部在public For

    2024年02月08日
    浏览(34)
  • C# 添加现有的窗体的时候,为何窗体的控件不显示了?

    有的项目中一些功能是可以复用的,将原始项目中的窗体文件添加到新项目时,发现有一些问题。添加完之后,打开的窗体发现没有显示任何控件,窗体的大小还变小了? 将Form1.cs Form1.resx Form1.Designer 三个文件直接复制到新项目的目录下,然后直接在新项目上选择添加现有项

    2024年02月10日
    浏览(33)
  • C# 给winfrom窗体添加皮肤控件

    如何快速给C# winform添加好看的皮肤C# Winform中窗体的美化 SkinEngine的应用 皮肤控件换肤素材包,IrisSkin2.dll皮肤素材资源下载  压缩包内一共有22种皮肤素材,使用说明:把控件拖到你的form上,只需一行代码,即可实现整个form包括其所有控件的皮肤的更换,  总共有几十套皮肤

    2024年02月05日
    浏览(35)
  • Winform中实现窗体控件适配(自适应窗体)布局_通过C#代码方式

    即:未启用控件缩放效果代码时,控件内容都是固定在窗体界面的指定位置,不会跟随窗体的拉伸,放大而进行适配,如下图所示: 即:启用控件缩放效果代码时,控件内容会跟随窗体的拉伸,放大而进行适配,如下图所示: 实现思路是: ①在窗体初始化时先获取窗体的宽

    2023年04月17日
    浏览(32)
  • C# winform usercontrol控件跟随主窗体实现自动大小

    usercontrol控件跟随主窗体实现自动大小 今天是跟着哗哩哗哩大学学习C的第N天,但是是学习usercontrol的第一天。 第一天遇到的问题就是如何将usercontrol的大小跟随主窗体的一起变大变小。视频中教得很详细,首先是将usercontrol控件实例化,接着就是设置usercontrol的dock属性为fil

    2024年02月12日
    浏览(35)
  • C#在winForm窗体中添加一个可以自由拖动的控件

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 目录 文章目录 一、实现步骤 1.创建一个新的Windows窗体项目 2.添加控件如图 3.代码部分 总结 textBox1=鼠标在需要拖动的控件中的坐标 X 值 textBox2=鼠标在需要拖动的控件中的坐标 Y 值 textBox3=需要

    2024年01月19日
    浏览(32)
  • Windows窗体学这一篇就够了(C#控件讲解)

    目录 一、Form窗体 1.1窗体的创建和删除 1、添加窗体 2、删除窗体 3、多窗体的使用 1.2、窗体属性 1.2.1更换窗体图标 1.2.2隐藏窗体的标题栏(FormBorderStyle属性) 1.2.3控制窗体的显示位置(StartPosition属性) 1.2.4窗体背景图片的设置 1.2.5窗体的显示与隐藏 1.3窗体的事件 1.3.1单击事件(C

    2024年02月11日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包