- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我使用WinForms
屏蔽文本框以hh:mm:ss
格式输入时间。我的掩码是 99:99:99
,我使用 right-to-left
输入模式。
问题是,当我在其中键入 123
时,我希望它输入 1:23
,但它却这样做:__:12: 3_
(因此值为 12:3x
,并且它将 x 替换为键入的下一个值)。
我该怎么做才能让它只将文本推到左边而不是将整个 ss
block 复制到 mm
?
编辑:这里有一个说明:我的客户需要以这样的方式输入时间值:12[Enter]
接受为 12 秒123[Enter]
是 1 分 23 秒1234[Enter]
将是 12 分 34 秒12345[Enter]
将是 1 小时 23 分 45 秒,依此类推...
问题是,当 123
被输入到一个屏蔽的文本框中时,它会将 12
移动到 minutes
字段,而不仅仅是 1
,seconds
字段中只剩下 3
。
编辑 2:任何使用过屏蔽文本框的人都知道,将 TextAlign 设置为 Right 并不能像您期望的那样工作,就像在任何普通的文本编辑器中一样。相反,它只是将整个掩码放在控件的右侧,但值的插入方式仍与 TextAligh 为 Left 时相同。
这就是我尝试使用 RightToLeft 的原因。
最佳答案
您想要的似乎几乎是不可能的。除非您键入冒号以显示分隔,否则掩码文本框如何知道您是指 1 位还是 2 位应用于您键入的第一个字段?
我认为对于您似乎想要的具有 hh:mm:ss
自定义格式的 DateTimePicker
会更好。输入自动从 hours
字段开始。用户可以键入 1 位或 2 位数字,然后输入冒号,输入将自动移至下一个字段。您还可以选择 UpDown 按钮,用户可以单击这些按钮来更改突出显示的字段。
几乎不可能,我指的是原生行为。通过创建一个继承自文本框的自定义文本框,您可以做您想做的事:
public class TimeTextBox : TextBox
{
public TimeTextBox()
{
this.KeyPress += TimeTextBox_KeyPress;
}
public DateTime timeValue = new DateTime();
private void TimeTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = true;
if(char.IsDigit(e.KeyChar))
{
Text += e.KeyChar;
SelectionStart = Text.Length;
}
else
{
MessageBox.Show("Wrong input");
return;
}
FixText();
if(Text.Length > 3 && !DateTime.TryParse(Text, out timeValue))
{
MessageBox.Show("Wrong input");
Text = Text.Remove(Text.Length - 1);
FixText();
timeValue = DateTime.Parse(Text);
}
}
private void FixText()
{
Text = Text.Replace(":", "");
for(int i = Text.Length - 3; i > -1; i -= 2)
{
Text = Text.Insert(i + 1, ":");
SelectionStart = Text.Length;
}
}
}
这将格式化和验证输入,总是从右边开始计数,每 2 个字符插入一个冒号。有简单的验证,但尚未针对所有场景进行测试。
关于c# - 如何修复 c# 屏蔽文本框从右到左的输入行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23860448/
目前我正在使用 [self presentModalViewController :newVC animated:YES] 。我想从左/右/顶部/底部呈现带有推送效果的 newViewcontroll
我正在尝试实现“带有上一个和下一个的部分幻灯片”。这些部分的标记如下: Section 1 Section 2 Section 3 Prev Next 除具有 acti
我的问题与此处提出的问题几乎相同:question 不同的是,我想从右边切换第 2 位和第 4 位数字,而不是像另一个问题中那样从左边切换。所以在我的例子中最右边的数字是 1。示例:283926.67
我是一名优秀的程序员,十分优秀!