我用两个DateTimePicker做一个日期区间,
但我想要限定DateTimePicker1一定要小于DateTimePicker2,
所以我想用事件去触发,
当它有改变且离开控件时才去做比对,(让比对次数越少越好!!)
我想问一下我该用哪一个事件才是最好的?
我原本是用Leave,
可是我主管说不该用这个??
想请问各位先进,教教我该用什么和为什么?

解决方案 »

  1.   

    应该是用onleave吧,要不用onchange?不知道有没这事件
      

  2.   

    可是我在属性窗口的事件中没有看到OnLeave及OnChange呀??
      

  3.   

    不好意思错了,是Leave和Change
      

  4.   


    private void dateTimePicker_ValueChanged(object sender, EventArgs e)
    {
        if (dateTimePicker2.Value < dateTimePicker1.Value)
        {
            MessageBox.Show("不符合规则");
        }
    }
      

  5.   

    再请问一下Validated跟Validating和Leave差别…
    因为我怎么试它们三个都会先后的触发…
    可以跟我说什么时候只会触发Leave…
    什么时候又是触发Validated跟Validating??
      

  6.   

    我是想直接帮使用者对掉…
    所以用ValueChanged好像比Leave多次吧??
    我不知我想的对不对??
      

  7.   

    一、控件事件发生顺序
    (1)当通过使用键盘(Tab、Shift+Tab 等)、通过调用 Select 或 SelectNextControl 方法或者通过将 ContainerControl.ActiveControl 属性设置为当前窗体等方式更改焦点时,焦点事件按以下顺序发生: 
    Enter --> GotFocus --> Leave --> Validating --> Validated --> LostFocus (2)当通过使用鼠标或调用 Focus 方法的方式更改焦点时,焦点事件按以下顺序发生: 
    Enter --> GotFocus --> LostFocus --> Leave --> Validating --> Validated 二、取消
    (1)如果 CausesValidation 属性设置为 false,则将取消 Validating 和 Validated 事件。
    (2)如果在 Validating 事件委托中,CancelEventArgs 的 Cancel 属性设置为 true,则正常情况下将在 Validating 事件之后发生的所有事件均被取消。
      

  8.   

    DateTimePicker控件的Validated事件是最后一个。如果没实例化事件,没景响。使用多个事件,要考虑之间的影响。
      

  9.   

    Leave   在输入焦点离开控件时发生。   
    ValueChanged  当 Value 属性更改时发生
    在引发该事件前验证用户输入。当输入的日期早于 MinDateTime 或晚于 MaxDateTime 时,不引发该事件。 
    if(DateTime.Compare(this.dateTimePicker1.Value,this.dateTimePicker2.Value)>0)   
      {   
              
      }
      

  10.   

    看来大家都用ValueChanged…
    难怪我主管说我每次Event都用错…
    呵!!我还是用ValueChanged好了…
    感谢各位大大啰!!