按钮被单击是怎么判断出的? 在c#/winform中 当我们单击一个按钮时候 会触发他的单击事件,问题一:怎么判断出有人单击了这个按钮?问题二:当判断出这个按钮被点击了以后会调用 单击事件, 这个调用事件的代码在那里?(主:已了解事件原理) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼主想问单片机或者plc原理吧 1 :响应按钮的mousedown事件/keydown事件2 :事件如果不是你自己加载,一般会自动出现在你的form.cs文件里面(属性》》》双击mouserdown) c#里按钮被点击后不是会调用OnClick事件么?protected void button1_Click(object sender, EventArgs e){} 你在双击一个button,IDE会为其生成click事件的框架,你在这个框架中去写代码,如果你稍微留意,在Form1.Designer.cs中,框架也加入了一行代码:this.button1.Click += new System.EventHandler(this.button1_Click);既然你理解事件的原理,你应该就知道,当点击按钮时,操作系统会捕获这个消失发送给button,按钮就会去调用对应的事件处理程序了。 在WndProc里面处理的。哪里处理比较复杂。比较简单的说法:单击, 如果你说的是MouseClick, 那么是在收到鼠标按键的up消息的时候, 产生的。但是前提是down的时候, 也是在这个按钮上。 比如你在A按钮上down, 在B按钮上up , 是不会有Click的。如果是Click, 指的是鼠标的up, 键盘的回车, 空格, 快捷键以及PerformClick函数调用 , 等情况下, 产生的。 甚至是override那个按钮, 然后调用OnClick也行。详细关于windows消息的机制,如果仅仅是想了解下, 不打算 推荐看下windows 程序设计第一章。 禽兽啊!都不是来解答lz问题的, 都是在拿lz寻开心啊~~哎。 不知道该回答哪方面的知识。给个小白的回答1.当触发了单击事件就说明有人点击了这个按钮(够小白吧)2.在消息循环中封装了Click\MouseClick事件委托(更小白了吧) event都可以通过delegate来完成。 event强调了事件。通过订阅事件来获得通知event只是delegate的一个特殊形式 .net框架层的.win32用户层的.win32驱动层的.PC层的.硬件层的...LZ想知道哪一层的? Form1.cs代码 public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void BtnSumbit_Click(object sender, EventArgs e) { } }当初始化我的From时候会调用InitializeComponent()方法InitializeComponent()方法 private void InitializeComponent() { this.BtnSumbit = new System.Windows.Forms.Button(); this.SuspendLayout(); // // BtnSumbit // this.BtnSumbit.Location = new System.Drawing.Point(124, 94); this.BtnSumbit.Name = "BtnSumbit"; this.BtnSumbit.Size = new System.Drawing.Size(75, 23); this.BtnSumbit.TabIndex = 0; this.BtnSumbit.Text = "确定"; this.BtnSumbit.UseVisualStyleBackColor = true; this.BtnSumbit.Click += new System.EventHandler(this.BtnSumbit_Click); // // Form1 // this.ClientSize = new System.Drawing.Size(292, 266); this.Controls.Add(this.BtnSumbit); this.Name = "Form1"; this.Text = "Form1"; this.ResumeLayout(false); }其中this.BtnSumbit.Click += new System.EventHandler(this.BtnSumbit_Click);这句代码 是将Click事件与 EventHandler委托关联EventHandler委托原型public delegate void EventHandler(object sender, EventArgs e);按钮事件的来回就是这样的 ,但一个事件要运行,要有调用代码, 这个事件的触发来之于单击,请问各位先生女士们 问题1. 用户的单击是怎么捕捉到的 ?? 问题2.当判断出这个按钮被点击了以后会调用 单击事件, 这个调用事件的代码在那里? 鼠标单击->电信号由驱动程序捕获送到操作系统->操作系统包装这个“消息”->传送的接收消息的窗口的应用程序的消息队列。这个队列是操作系统给每个有窗口的程序的建立和维护的;建议楼主看一下windowsAPI程序设计 按钮的“单击”,其实并不存在,只是视觉上感觉是被“单击”了,起原理还得从鼠标的工作原理来解释:首先得有一个被执行的程序在不停地检测着com1:/com2:端口(现在都USB了),如果有鼠标移动,则触发了一个中断(很抱歉,int??H忘了)被这个正在执行的程序捕获到,这就是“事件”,如果鼠标某个键被按下,又会产生另外一个中断(中断号仍然忘了,可以百度一下),这对正在执行的程序捕获时也是一个“事件”,具体什么事件要被响应(处理)依旧由这个正在执行的程序来决定,比如,一个“按钮”被定义在(X1,Y1)和(X2,Y2)区域,那么当鼠标移动时产生的那么多事件都可以不与处理,惟独其“移动”到按钮区域时才处理,但处理时还要判断鼠标的某个键按下的中断是否产生,如果被“单击”了则“事件”发生了,则:1。显示画面为“按钮”被压下了,2。执行相应的程序(完成具体的业务)WINDOWS是基于事件处理的系统,这种系统的事件是诸如在for(;;)循环体无限次数循环的事件,要想跳出循环,只要某个按钮事件的响应是break/close/exit等即可。不知说的明白没有。 28楼说到我心底去了 呵呵!我给的分数太少,问题难度有些大,今天没法加分,明天再加!基本原理大致是这样的这个问题属于操作系统中的IO处理用户进程程序(发出IO请求)-》输入/输出管理程序(接受IO请求)-》设备驱动程序(完成IO请求) 1.如何判断单击事件:当你点击一个控件的时候,操作系统就会产生一条命令,发送一个点击的指令给这个控件(别问我为什么会产生这条指令,你去问微软),在控件的defwndproc这个函数中,会处理这里条指令,也就产生了单击这个事件的事实。2.调用事件的代码:调用事件这件事,这个被封装在了控件中,如果你会自己定义事件了,那么这个问题也就自然明白了。在控件接收到单击命令时,就调用这个事件了。 vs2008里的调用堆栈怎么用啊???!!! UDP的一个简单问题 急问```在线等 今天如何向软件危机宣战,没经验的听听就行,就别恢复了 我想将一些网站的货物信息批量抓到本地,有什么好办法? SQLExpress winform 备份问题。 Process.start()启动程序,可以正常启动程序,但是waitForExit()无法正常使用 怎样用C#检测一超级链的有效性??? 如何在C#中实现软件换肤? 大派送 菜鸟问题,求教。。 关于UDP和组播的一些疑问.
{
}
既然你理解事件的原理,你应该就知道,当点击按钮时,操作系统会捕获这个消失发送给button,按钮就会去调用对应的事件处理程序了。
比较简单的说法:
单击, 如果你说的是MouseClick, 那么是在收到鼠标按键的up消息的时候, 产生的。
但是前提是down的时候, 也是在这个按钮上。 比如你在A按钮上down, 在B按钮上up , 是不会有Click的。
如果是Click, 指的是鼠标的up, 键盘的回车, 空格, 快捷键以及PerformClick函数调用 , 等情况下, 产生的。 甚至是override那个按钮, 然后调用OnClick也行。详细关于windows消息的机制,如果仅仅是想了解下, 不打算 推荐看下windows 程序设计第一章。
都不是来解答lz问题的, 都是在拿lz寻开心啊~~哎。
不知道该回答哪方面的知识。给个小白的回答
1.当触发了单击事件就说明有人点击了这个按钮(够小白吧)
2.在消息循环中封装了Click\MouseClick事件委托(更小白了吧)
event强调了事件。通过订阅事件来获得通知
event只是delegate的一个特殊形式
win32用户层的.
win32驱动层的.
PC层的.
硬件层的...
LZ想知道哪一层的?
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void BtnSumbit_Click(object sender, EventArgs e)
{ }
}当初始化我的From时候会调用InitializeComponent()方法
InitializeComponent()方法 private void InitializeComponent()
{
this.BtnSumbit = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// BtnSumbit
//
this.BtnSumbit.Location = new System.Drawing.Point(124, 94);
this.BtnSumbit.Name = "BtnSumbit";
this.BtnSumbit.Size = new System.Drawing.Size(75, 23);
this.BtnSumbit.TabIndex = 0;
this.BtnSumbit.Text = "确定";
this.BtnSumbit.UseVisualStyleBackColor = true;
this.BtnSumbit.Click += new System.EventHandler(this.BtnSumbit_Click);
//
// Form1
//
this.ClientSize = new System.Drawing.Size(292, 266);
this.Controls.Add(this.BtnSumbit);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false); }其中this.BtnSumbit.Click += new System.EventHandler(this.BtnSumbit_Click);
这句代码 是将Click事件与 EventHandler委托关联
EventHandler委托原型
public delegate void EventHandler(object sender, EventArgs e);按钮事件的来回就是这样的 ,但一个事件要运行,要有调用代码, 这个事件的触发来之于单击,
请问各位先生女士们 问题1. 用户的单击是怎么捕捉到的 ??
问题2.当判断出这个按钮被点击了以后会调用 单击事件, 这个调用事件的代码在那里?
这个队列是操作系统给每个有窗口的程序的建立和维护的;建议楼主看一下windowsAPI程序设计
首先得有一个被执行的程序在不停地检测着com1:/com2:端口(现在都USB了),如果有鼠标移动,则触发了一个中断(很抱歉,int??H忘了)被这个正在执行的程序捕获到,这就是“事件”,如果鼠标某个键被按下,又会产生另外一个中断(中断号仍然忘了,可以百度一下),这对正在执行的程序捕获时也是一个“事件”,具体什么事件要被响应(处理)依旧由这个正在执行的程序来决定,比如,一个“按钮”被定义在(X1,Y1)和(X2,Y2)区域,那么当鼠标移动时产生的那么多事件都可以不与处理,惟独其“移动”到按钮区域时才处理,但处理时还要判断鼠标的某个键按下的中断是否产生,如果被“单击”了则“事件”发生了,则:1。显示画面为“按钮”被压下了,2。执行相应的程序(完成具体的业务)
WINDOWS是基于事件处理的系统,这种系统的事件是诸如在for(;;)循环体无限次数循环的事件,要想跳出循环,只要某个按钮事件的响应是break/close/exit等即可。
不知说的明白没有。
我给的分数太少,问题难度有些大,今天没法加分,明天再加!
基本原理大致是这样的这个问题属于操作系统中的IO处理
用户进程程序(发出IO请求)-》输入/输出管理程序(接受IO请求)-》设备驱动程序(完成IO请求)
2.调用事件的代码:调用事件这件事,这个被封装在了控件中,如果你会自己定义事件了,那么这个问题也就自然明白了。在控件接收到单击命令时,就调用这个事件了。