今天被别人一个问题给问倒了

大鱼> 2018-05-24 04:34:52
加精
C#的打开了两个界面只有一个UI线程没错的对吧,假如这两个界面分别有一个button,是怎么知道用户点击的那个button呢?
...全文
6053 60 打赏 收藏 转发到动态 举报
写回复
用AI写文章
60 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_42429103 2018-06-10
  • 打赏
  • 举报
回复
高手如云 学学
visualc6 2018-06-07
  • 打赏
  • 举报
回复
每个按钮有一个handle,相当于一个窗口,有自己的消息队列。
KOEIKA9527 2018-06-04
  • 打赏
  • 举报
回复
感觉概念得东西我这辈子都记不牢!
风吹腚腚凉 2018-06-04
  • 打赏
  • 举报
回复
引用 7 楼 caozhy 的回复:
[quote=引用 5 楼 qq_17486399 的回复:] [quote=引用 4 楼 caozhy 的回复:] 每个按钮有一个handle,相当于一个窗口,有自己的消息队列。
对,是这个。感觉底层的东西还需要去沉淀啊[/quote] 虽然说你不了解,但是你了解了以后会发现,然而了解了并没有什么用。[/quote] 版主换人了这是? 了解一下还是有用的,比如事件的拦截。 比如短期内点击BUTTON的原因是什么。 那我就回答一下,你点击一下按钮,会发送windows消息进入消息队列里去,然后C#的窗体有线程会读取这些信息进行筛选过滤。 包括你在哪个地方点击的坐标是多少,点击的方式是左键还是右键,松开还是弹起,都是不同的消息编号。 然后做相应的处理。
NCScan 2018-06-04
  • 打赏
  • 举报
回复
楼上各位大佬说的非常精彩啊。 UI线程 窗体下可以理解成为主线程, 其实我理解的这个线程做的事情 就是一直在刷新UI,可能也不止做这点事情。 你的程序一旦在windws下运行,可以理解成为 在系统中注册,那么系统会针对你的程序给你编个号,(PID 句柄等等) 鼠标也好,键盘也罢,在windows机制下,一次触发,可以理解向PostMessage 这类函数一样。系统会把这次触发的消息 引导或者广播给 属于这次响应的程序。也就是之前说的编号哪.后面的应该都理解了,。
heyics 2018-06-01
  • 打赏
  • 举报
回复
声明个静态变量好了。 点不同的按钮,赋不同的值
smthgdin_020 2018-06-01
  • 打赏
  • 举报
回复
你说的谁是指用户还是操作系统? 点击事件由用户触发,操作系统能够感知到由用户触发的事件,会将此事件转换为一个(特定的)消息发送到程序的消息队列中。
boot_black 2018-06-01
  • 打赏
  • 举报
回复
进来学习下,mark
hez2010 2018-05-30
  • 打赏
  • 举报
回复
在事件触发的时候,都遵循了相应的接口,比如INotifyPropertyChanged等等,这些接口规定了参数的第一个是一个object类型的sender,所以每一个事件触发的时候实际上都是底层代码在对应触发对象的类那里调用了xxxEvent.Invoke(this, [argument]);就相当于把控件这个对象通过第一个参数sender传了进来。
xuzuning 2018-05-30
  • 打赏
  • 举报
回复
按钮有消息循环吗?
CyberLogix 2018-05-30
  • 打赏
  • 举报
回复
看看调试下.NET的源码就明白了,额呵呵
丁劲犇 2018-05-30
  • 打赏
  • 举报
回复
可以用Spi++之类的工具,看看按钮的句柄。其实,托管的代码最终都会变成WindowsAPI。 还是知道底层的东西比较好。
xuzuning 2018-05-30
  • 打赏
  • 举报
回复
引用 46 楼 twotuli_software 的回复:
值类型和引用类型有什么区别,借楼!
区别在于传递 赋值和作为参数时,值类型要通过复制一个副本去实现,引用类型直接传递表项号
stevenjin 2018-05-30
  • 打赏
  • 举报
回复
要用事件和委托去处理了
大鱼> 2018-05-30
  • 打赏
  • 举报
回复
引用 46 楼 twotuli_software 的回复:
值类型和引用类型有什么区别,借楼!
值类型主要是int,bool,结构等,直接存储的是数据本身存储在栈中,效率较高,而且用完即回收,引用类型呢存储的是数据的引用,数据存储在堆中,用完不会立即回收而是GC去回收。值类型创建的是新的对象,引用类型创建的是一个引用,比如我们使用一个类的时候会先new一个新的实例对象,这个对象就是一个引用。
维秀斯丢丢 2018-05-30
  • 打赏
  • 举报
回复
值类型和引用类型有什么区别,借楼!
大鱼> 2018-05-30
  • 打赏
  • 举报
回复
引用 40 楼 OExpress 的回复:
看看调试下.NET的源码就明白了,额呵呵
.NET的源码都有了啊
wanghui0380 2018-05-30
  • 打赏
  • 举报
回复
自己去看《深入浅出MFC》的前面第一章
引用
第1章 Win32程序基本概念 Win32程序开发流程 需要什么函数库(.LIB) 需要什么头文件(.H) 以消息为基础,以事件驱动之(message based,event driven) 一个具体而微的Win32程序 程序进入点WinMain 窗口类之注册与窗口之诞生 消息循环 窗口的生命中枢:窗口函数 消息映射(Message Map)的雏形 对话框的运行 模块定义文件(.DEF) 资源描述档(.RC) Widnows程序的生与死 空闲时间的处理:OnIdle Console程序 Console程序与DOS程序的差别 Console程序的编译链接 JBACKUP:Win32 Console程序设计 MFCCON:MFC Console程序设计 行程与线程(Process and Thread) 核心对象 一个行程的诞生与死亡 产生子行程 一个线程的诞生与死亡...
我们入行的时候,前辈告诉我们只要是windows程序员,win32 sdk 滴第一个空白的winform,那500行代码是一定要看,要知道的。 我现在只是把前辈们告诉我,告诉你们 ps:《深入浅出MFC》的有些东西还是不错的,“勿在浮沙筑高台” “山高月小,水落石出”,当你知道那win32 sdk的那500行以后,你这个问题基本无忧
threenewbee 2018-05-30
  • 打赏
  • 举报
回复
引用 42 楼 xuzuning 的回复:
按钮有消息循环吗?
有的。可以用SetWindowLong来把自己的消息处理程序挂钩到按钮上。
qq14923349 2018-05-28
  • 打赏
  • 举报
回复
就主线程与次线程问题嘛
加载更多回复(33)

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧