0

私のC#Windowsフォームには、1つのテキストボックスと1つのdatatimePickerがあります。このテキストボックスにはLeaveイベントがあり、テキストボックスのLeaveイベントが発生したときに、datetimepickerに値を入力したい この日時ピッカーには、ValueChanged イベントもあります。今私の問題は、テキストボックスのイベントからdatetimepickerに値を入力すると、同時にdatetimepickerのValueChangedイベントも発生することです。そのため、テキストボックスの Leave イベントが再び発生します。この問題では、テキストボックスの Leave イベントから datetimepicker Valuechanged イベントを発生させたくありません。これは私のコードのサンプルです。

private void textbox_Leave(object sender, EventArgs e) 
{ 
      datetimepicker.Value = System.DateTime.Now.ToString("dd/MM/yyyy").Substring(0, 10); 
} 

private void datetimepicker_ValueChanged(object sender, EventArgs e) 
{ 
      //do something 
} 

手伝ってくれてありがとう。私の英語でごめんなさい。

4

2 に答える 2

0

今、私はこれによって私の問題を解決します。

private void textbox_Leave(object sender, EventArgs e) 
{ 
      datetimepicker.ValueChanged -= datetimepicker_ValueChanged;
      datetimepicker.Value = System.DateTime.Now.ToString("dd/MM/yyyy").Substring(0, 10);
      datetimepicker.ValueChanged += datetimepicker_ValueChanged; 
} 

private void datetimepicker_ValueChanged(object sender, EventArgs e) 
{ 
      //do something 
} 
于 2013-01-09T08:23:08.080 に答える
0

あなたは使用することができます

  • またはブール変数。これは、値が外部からDateTimePicker設定されていることを示します。ValueChangedEvent

    //PSEUDO CODE
    bool setDateFromOutside = false; //GLOBAL VARIABLE
    
    public void TextBox_Leave(...){
    
     setDateFromOutside = true;   //SET TRUE
    
     dateTimePicker.Value = newDate; //SOME VALUE
    
     setDateFromOutside = false;  //SET TRUE
    
    }
    
    public void DateTimePicker_ValueChanged(...){
    
       if(setDateFromOutside)
          return;
    }
    
  • または値を設定する前に、そのからDateTimePicker 購読ValueChangedEventを解除し、後で再度購読します。

于 2013-01-09T07:37:10.667 に答える