2

WinFormsマスクされたテキストボックスを使用して、 の形式で時間を入力しますhh:mm:ss。これに対する私のマスクはで、入力モード99:99:99を使用します。right-to-left

問題は、123入力すると が入力されることを期待しています1:23が、代わりにこれを実行することです__:12:3_(したがって、値は12:3xであり、入力された次の値で x を置き換えます)。

ssブロック全体をコピーするのではなく、テキストを左にプッシュするにはどうすればよいmmですか?

編集:ここに明確化があります:私のクライアントは、彼が入力したときに次のように時間値を入力する必要があります: 12秒は1分、23秒は12分、34秒は1時間、23分、45
12[Enter]秒として受け入れられます秒など...
123[Enter]
1234[Enter]
12345[Enter]

問題は123、マスクされたテキスト ボックスに を入力すると、 だけではなくフィールドに移動12し、だけがフィールド内に残ることです。minutes13seconds

編集 2:マスクされたテキスト ボックスを操作したことがある人なら誰でも知っているように、TextAlign を Right に設定すると、通常のテキスト エディターのように期待どおりに動作しません。代わりに、マスク全体をコントロールの右側に配置するだけですが、値は TextAligh が Left の場合と同じ方法で挿入されます。
これが、RightToLeft を使用してみた理由です。

4

2 に答える 2

0

シンプルなテキスト ボックスを使用して、このロジックに従って文字列を分割できます。コードに従って数時間に延長できる数分と数秒だけを示しました。

int seconds, minutes;
if (textBox1.Text.Length == 1 || textBox1.Text.Length == 2)
{
    seconds = int.Parse(textBox1.Text);
}
else if (textBox1.Text.Length == 3)
{
    seconds = int.Parse(textBox1.Text.Substring(1, 2));
    minutes = int.Parse(textBox1.Text.Substring(0, 1));
}
else if (textbox1.Text.Length == 4)
{
    seconds = int.Parse(textBox1.Text.Substring(2, 2));
    minutes = int.Parse(textBox1.Text.Substring(0, 2));
}
于 2014-05-25T22:24:16.697 に答える