1

24 時間以上を許可する TimeSpan タイム ピッカー列を作成する方法が必要です。現在、DateTimePicker から派生した TimePicker を取得しましたが、24 を過ぎるとゼロに戻ります。そして、その動作を変更する方法が見つかりませんでした。

助けてください。

ありがとう!

4

1 に答える 1

6

コメントで考えていたように、おそらくこれを処理する最も簡単な方法は、2 つのNumericUpDownコントロールを用意することです。1 つは日を表し、もう 1 つは時間を表します。

そこから、少し余分なロジックを追加する必要があります。これらのスピナーは「ロールオーバー」をネイティブにサポートしていないため、自分でコーディングする必要があります。これらをイベントに追加し、MSDN のドキュメントClickを参照すると、イベントへのフックを検討していると思います。他に特に興味深いものはありません。

コードは次のようになります。

 private void ctrlUpDownHour_Click(object sender, EventArgs e)
 {
    if(ctrlUpDownHour.Value >= 24)
    {
        ctrlUpDownDay.Value += 1;
        ctrlUpDownHour.Value -= 24;
    }
 }

ctrlUpDownHour.Maximumプロパティを 24に設定すると役立つ場合もあります。

EDIT:コメントで述べたように、おそらくあなたの状況を処理する最も簡単な方法は、単にuser controlを作成することです。

2 つのコントロールを持つ新しいユーザー コントロールを作成するだけNumericUpDownです。プロジェクトに新しい項目を作成し、「ユーザー コントロール」項目をクリックすることから始めます。これでうまく開始できます。

NumericUpDownその後、必要に応じてコントロールを視覚的に設計できます。それが処理された後、コード ビハインドに移動すると、次のようになります。

public partial class UserControl1 : UserControl
{
    public UserControl1()
    {
         InitializeComponent();
         // anything else you want to do here
    }

    public TimeSpan GetSelectedTimeSpan()
    {
       return new TimeSpan((int)numericUpDown1.Value, (int)numericUpDown2.Value, 0, 0);
    }
}

その後、このユーザー コントロールを他のフォームの他のコントロールと同じように配置できます。それから TimeSpan が必要な場合は、他のコントロールと同じようにコントロールをキャプチャしてuserControl1Instance.GetSelectedTimeSpan().

ブラモ、やった。

于 2012-11-27T16:36:16.010 に答える