在c#/winform中  当我们单击一个按钮时候 会触发他的单击事件,问题一:怎么判断出有人单击了这个按钮?
问题二:当判断出这个按钮被点击了以后会调用 单击事件,  这个调用事件的代码在那里?
(主:已了解事件原理)

解决方案 »

  1.   

    楼主想问单片机或者plc原理吧
      

  2.   

    1 :响应按钮的mousedown事件/keydown事件2 :事件如果不是你自己加载,一般会自动出现在你的form.cs文件里面(属性》》》双击mouserdown)
      

  3.   

    c#里按钮被点击后不是会调用OnClick事件么?protected void button1_Click(object sender, EventArgs e)
    {
    }
      

  4.   

    你在双击一个button,IDE会为其生成click事件的框架,你在这个框架中去写代码,如果你稍微留意,在Form1.Designer.cs中,框架也加入了一行代码:this.button1.Click += new System.EventHandler(this.button1_Click);
    既然你理解事件的原理,你应该就知道,当点击按钮时,操作系统会捕获这个消失发送给button,按钮就会去调用对应的事件处理程序了。
      

  5.   

    在WndProc里面处理的。哪里处理比较复杂。
    比较简单的说法:
    单击, 如果你说的是MouseClick, 那么是在收到鼠标按键的up消息的时候, 产生的。
    但是前提是down的时候, 也是在这个按钮上。 比如你在A按钮上down, 在B按钮上up , 是不会有Click的。
    如果是Click, 指的是鼠标的up, 键盘的回车, 空格, 快捷键以及PerformClick函数调用 , 等情况下, 产生的。 甚至是override那个按钮, 然后调用OnClick也行。详细关于windows消息的机制,如果仅仅是想了解下, 不打算 推荐看下windows 程序设计第一章。
      

  6.   

    禽兽啊!
    都不是来解答lz问题的, 都是在拿lz寻开心啊~~哎。
      

  7.   


    不知道该回答哪方面的知识。给个小白的回答
    1.当触发了单击事件就说明有人点击了这个按钮(够小白吧)
    2.在消息循环中封装了Click\MouseClick事件委托(更小白了吧)
      

  8.   

    event都可以通过delegate来完成。  
    event强调了事件。通过订阅事件来获得通知
    event只是delegate的一个特殊形式
      

  9.   

    .net框架层的.
    win32用户层的.
    win32驱动层的.
    PC层的.
    硬件层的...
    LZ想知道哪一层的?
      

  10.   

    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.当判断出这个按钮被点击了以后会调用 单击事件, 这个调用事件的代码在那里?
      

  11.   

    鼠标单击->电信号由驱动程序捕获送到操作系统->操作系统包装这个“消息”->传送的接收消息的窗口的应用程序的消息队列。
    这个队列是操作系统给每个有窗口的程序的建立和维护的;建议楼主看一下windowsAPI程序设计
      

  12.   

    按钮的“单击”,其实并不存在,只是视觉上感觉是被“单击”了,起原理还得从鼠标的工作原理来解释:
    首先得有一个被执行的程序在不停地检测着com1:/com2:端口(现在都USB了),如果有鼠标移动,则触发了一个中断(很抱歉,int??H忘了)被这个正在执行的程序捕获到,这就是“事件”,如果鼠标某个键被按下,又会产生另外一个中断(中断号仍然忘了,可以百度一下),这对正在执行的程序捕获时也是一个“事件”,具体什么事件要被响应(处理)依旧由这个正在执行的程序来决定,比如,一个“按钮”被定义在(X1,Y1)和(X2,Y2)区域,那么当鼠标移动时产生的那么多事件都可以不与处理,惟独其“移动”到按钮区域时才处理,但处理时还要判断鼠标的某个键按下的中断是否产生,如果被“单击”了则“事件”发生了,则:1。显示画面为“按钮”被压下了,2。执行相应的程序(完成具体的业务)
    WINDOWS是基于事件处理的系统,这种系统的事件是诸如在for(;;)循环体无限次数循环的事件,要想跳出循环,只要某个按钮事件的响应是break/close/exit等即可。
    不知说的明白没有。
      

  13.   

    28楼说到我心底去了  呵呵!
    我给的分数太少,问题难度有些大,今天没法加分,明天再加!
    基本原理大致是这样的这个问题属于操作系统中的IO处理
    用户进程程序(发出IO请求)-》输入/输出管理程序(接受IO请求)-》设备驱动程序(完成IO请求)
      

  14.   

    1.如何判断单击事件:当你点击一个控件的时候,操作系统就会产生一条命令,发送一个点击的指令给这个控件(别问我为什么会产生这条指令,你去问微软),在控件的defwndproc这个函数中,会处理这里条指令,也就产生了单击这个事件的事实。
    2.调用事件的代码:调用事件这件事,这个被封装在了控件中,如果你会自己定义事件了,那么这个问题也就自然明白了。在控件接收到单击命令时,就调用这个事件了。