私のプログラムでは、DateTimePickerのValue changedイベントを使用していますが、矢印をクリックしたときにValueChangedイベントが発生したり、値がプログラマチックに変更された場合は、ユーザーのDateTimePicker(値がプログラムによって変更されたときではない)、これを行う方法はありますか?ユーザーがDateTimePickerコントロールと対話するときに発生するイベントは何ですか?
答えて
はい、MSDN documentationをご覧ください。特に、あなたがこのイベントを使用してコントロールを配線する必要がありますOnValueChanged
イベント
:コンストラクタメソッドで
:
dateTimePickerControl.ValueChanged += new EventHandler(picker_ValueChanged);
そして、ここでは、メソッドのシグネチャである:
void f_ValueChanged(object sender, EventArgs e)
{
//Do whatever you need when the value changes here
}
これはデザイナーからも行うことができます。 Properties、Eventsの部分に行くと、すべてのイベントが表示されます。ちょうどダブルクリックすれば、メソッド署名と配線が作成されます。
YOUR UPDATE TO UPDATE
あなたは、特にこれは、プログラムの変更であるかどうかを確認したい場合は、このような何かをしたい:
クラス
でグローバル変数を作成します。Boolean isProgrammaticEvent = false
;
あなたのプログラム変更前:あなたのイベントの配線で
isProgrammaticEvent = true;
//Change picker value
:
void f_ValueChanged(object sender, EventArgs e)
{
Boolean isThisProgrammatic = isProgrammaticEvent;
isProgrammaticEvent = false;
if(isThisProgrammatic)
return;
//Do whatever you need when the value changes here
}
ジャスティンは答えてくれてありがとうございますが、このイベントは両方の状況で起きます(ユーザーが変更したときやプログラムによって変更されたとき)。ユーザーがDateTimePickerの値を変更したときのみ識別する方法はありますか? – user1157690
プログラムで変更する前にオンにしてから、イベントで常にオフにすることができるグローバルブール値を持つことができますか?グローバルは偉大なプログラミングの練習ではありませんので、あなたは本当にこの機能が必要だと思うようにしてください:)ここでは、そのような行に沿ってすでに質問されているので:http://stackoverflow.com/questions/2806601/how-to-distinguish-ユーザー - 対 - プログラム - 変更 - winforms - チェックボックス –
私は実行する必要があるものを反映するためにコードを更新しました –
あなたはDropDown
イベントのイベントハンドラをオフにし、有効にすることができますドロップダウンカレンダーが閉じられたときに戻ってくるCloseUp
イベントにおけるユーザ:
private void dateTimePicker1_ValueChanged(object sender, EventArgs e) {
this.Text = dateTimePicker1.Value.ToString();
}
private void dateTimePicker1_DropDown(object sender, EventArgs e) {
dateTimePicker1.ValueChanged -= dateTimePicker1_ValueChanged;
}
private void dateTimePicker1_CloseUp(object sender, EventArgs e) {
dateTimePicker1.ValueChanged += dateTimePicker1_ValueChanged;
dateTimePicker1_ValueChanged(sender, e);
}
これにより、ユーザは、ドロップダウン時にカレンダーをスクロールさせながら焼成からValueChanged
イベントを防止します。
同じ概念を使用して、イベントを発射せずに、プログラムの日付を変更するには:
private void ProgramChangesDateTime(DateTime dt) {
dateTimePicker1.ValueChanged -= dateTimePicker1_ValueChanged;
dateTimePicker1.Value = dt;
dateTimePicker1.ValueChanged += dateTimePicker1_ValueChanged;
}
あなたは、ユーザーが変更を行った際に知っておくDateTimePicker
から派生することができます
class DateTimePickerUser : DateTimePicker
{
private bool userSetValue;
public bool UserSetValue
{
get
{
return userSetValue;
}
}
public DateTimePickerUser()
{
userSetValue = true;
}
public new DateTime Value
{
get
{
return base.Value;
}
set
{
userSetValue = false;
base.Value = value;
userSetValue = true;
}
}
}
ときForm
のDateTimePickerUser
を使用すると、ValueChangedイベントのフラグをチェックするだけです。
private void dateTimePickerUser1_ValueChanged(object sender, EventArgs e)
{
if (dateTimePickerUser1.UserSetValue)
this.Text = "User changed value.";
else
this.Text = "Code changed the value.";
}
これはJustin Pihonyの例と似ていますが、フラグを自分で設定する必要はありません。このコントロールを使用するだけです。
- 1. asp.net Gridviewコントロールで発生するイベントのシーケンスは何ですか?
- 2. コントロールと対話するときに新しいWPFウィンドウでInvalidOperationExceptionが発生する
- 3. Androidで通話が終了したときに発生するイベントは何ですか?
- 4. ユーザーがラジオボタンをクリックしたときにイベントが発生する
- 5. ユーザーがiPad 3のINPUT要素に指示したときに発生するイベントは何ですか?
- 6. Google翻訳サイトにSeleniumと対話するときにJavaScriptを有効にするとエラーが発生する
- 7. SWTでは、ユーザー対話とコードの原因となるイベントを区別することは可能ですか?
- 8. onItemDisclosureイベントを発生させるとitemtapイベントが発生する
- 9. 別のユーザーとサインインするときにエラーが発生する
- 10. ユーザーはMicrosoft Vistaでサービスと直接対話できますか?
- 11. 移動が発生するとイベントが発生する
- 12. 特定のイベントが発生した後でコントロールを表示することはできますか
- 13. 他のコントロールのイベントを発生させることは可能ですか?
- 14. errorProvider.SetIconAlignmentを使用すると、ターゲットコントロールで何らかのイベントが発生する
- 15. Whatsappでユーザーがディープリンクを送信するとイベントが発生する
- 16. Discordボットがギルドに加わったときに発生するイベントは何ですか?
- 17. セグメント化されたコントロールとのユーザー対話を無効にしますか?
- 18. jQuery - フォーカスがコントロールのグループを離れるときにイベントを発生
- 19. は、ユーザーとの対話
- 20. WPF:ユーザーが閉じるボタン[X]を押したときに発生するイベントはありますか?
- 21. 対話型プログラムを終了すると無限ループが発生する
- 22. サブプロセスと対話するときにPython subprocess.popenが失敗する
- 23. Control.ParentChangedイベントが発生すると、
- 24. フロープレイヤーがクリップのダウンロードを完了したときに発生するイベントは何ですか?
- 25. 携帯電話用に開発するときに避けるべきAsp.netコントロール
- 26. EventKitイベントが発生したときにアプリケーションに通知する
- 27. TextBox MainWindowのロードイベントが発生したときに発生するTextChangedイベント
- 28. UserDeletedRowイベントが発生したときにデータグリッド行からデータを取得することはできますか
- 29. jcleryのイベントをクリックするとvclickイベントが発生する
- 30. MKMAPVIEWエクステントが変更されたときに発生するイベント
質問は不明です。文章を拡大したり修正したりして、あなたが望むものを明確に理解できますか? – Mathieu
'Click'イベントを探してください...これはやってみたいという奇妙なことです。 –
私は同じ問題に直面していますが、デモwinformsアプリケーションを単独のdatetimepickerで作成し、矢印/カレンダーアイコンをクリックするとイベントは発生しません。期待どおりに異なる日付が変更された場合にのみ発生します。だから私はまだ見つけることができませんでしたが、コードのどこかに値を手動で設定しなければならないという問題があります。 – Veverke