2

フォームで DateTimePicker を使用したいのですが、ユーザーが DropDown のみで日付を選択する必要があり、DateTimePicker 自体での選択を無効にしようとしています (たとえば、KeyUp/Down を押すことによって)。

//this.dtp_datum_pracVykaz.ValueChanged += new System.EventHandler(this.dtp_datum_pracVykaz_ValueChanged);
this.dtp_datum_pracVykaz.DropDown += dtp_datum_pracVykaz_DropDown;
this.dtp_datum_pracVykaz.CloseUp += dtp_datum_pracVykaz_CloseUp;

どこ

    void dtp_datum_pracVykaz_DropDown(object sender, System.EventArgs e)
    {
        this.dtp_datum_pracVykaz.ValueChanged += new System.EventHandler(this.dtp_datum_pracVykaz_ValueChanged);
    }

    void dtp_datum_pracVykaz_CloseUp(object sender, System.EventArgs e)
    {
        this.dtp_datum_pracVykaz.ValueChanged -= new System.EventHandler(this.dtp_datum_pracVykaz_ValueChanged);
    }

問題は、DTP が有効になっているため、ユーザーは DropDown なしで日付を変更できることです (ただし、効果はありません)。DTP.Enabled = False; のようなものが必要です。ただし、ドロップダウンのアイコンを有効にする必要があります。

4

1 に答える 1

4

keydown イベントを使用する -

    private void dateTimePicker1_KeyDown(object sender, KeyEventArgs e)
    {
        e.SuppressKeyPress = true;
    }

このようにして、ユーザーが押したキーは無視され、ユーザーのキーボード入力が事実上無効になります。

于 2013-04-08T11:41:19.887 に答える