English 中文(简体)
内容提要改进
原标题:Textbox with decimal input improvement

我有一个文本箱,其数值为10500.00。 问题在于,当你进入价值,然后进入小数时,我就不能够让你回去,或把案文箱清除到新的价值上来。 我试图将价值重新定在0.00,但我想把它放在错误的位置上,因为它赢得了变革。 我的法典

 private void txtTransferAmount_KeyPress(object sender, KeyPressEventArgs e)
        {
            bool matchString = Regex.IsMatch(textBoxTransfer.Text.ToString(), @".dd");
            if (matchString)
            {
                e.Handled = true;
            }

            if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && e.KeyChar !=  . )
            {
                e.Handled = true;
            }

            // only allow one decimal point
            if (e.KeyChar ==  .  && (sender as TextBox).Text.IndexOf( . ) > -1)
            {
                e.Handled = true;
            }
        }

你们建议了哪类变化,以便我能够回下空间,或把茶箱清除到新的价值?

最佳回答

你们可以把“后天空”陷阱(8),如果发现,你会把手弄错。

您的法典可照此办理。

....
// only allow one decimal point
if (e.KeyChar ==  .  && (sender as TextBox).Text.IndexOf( . ) > -1)
{
    e.Handled = true;
}

if (e.KeyChar == (char)8)
    e.Handled = false;

有人建议,使你的法典更加直观,解释你的活动执行者正在做些什么,你可能想制造一种var,这意味着你正在执行的逻辑。 ......

private void txtTransferAmount_KeyPress(object sender, KeyPressEventArgs e)
{
    bool ignoreKeyPress = false; 

    bool matchString = Regex.IsMatch(textBoxTransfer.Text.ToString(), @".dd");

    if (e.KeyChar ==   ) // Always allow a Backspace
        ignoreKeyPress = false;
    else if (matchString)
        ignoreKeyPress = true;
    else if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && e.KeyChar !=  . )
        ignoreKeyPress = true;
    else if (e.KeyChar ==  .  && (sender as TextBox).Text.IndexOf( . ) > -1)
        ignoreKeyPress = true;            

    e.Handled = ignoreKeyPress;
}
问题回答

最好的方式是:

if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && e.KeyChar !=  .  && e.KeyChar !=   )
{
    e.Handled = true;
}




相关问题
Bring window to foreground after Mutex fails

I was wondering if someone can tell me what would be the best way to bring my application to the foreground if a mutex was not able to be created for a new instance. E.g.: Application X is running ...

How to start WinForm app minimized to tray?

I ve successfully created an app that minimizes to the tray using a NotifyIcon. When the form is manually closed it is successfully hidden from the desktop, taskbar, and alt-tab. The problem occurs ...

Linqy no matchy

Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...

Handle DataTable.DataRow cell change event

I have a DataTable that has several DataColumns and DataRow. Now i would like to handle an event when cell of this DataRow is changed. How to do this in c#?

Apparent Memory Leak in DataGridView

How do you force a DataGridView to release its reference to a bound DataSet? We have a rather large dataset being displayed in a DataGridView and noticed that resources were not being freed after the ...

ALT Key Shortcuts Hidden

I am using VS2008 and creating forms. By default, the underscore of the character in a textbox when using an ampersand is not shown when I run the application. ex. "&Goto Here" is not ...

WPF-XAML window in Winforms Application

I have a Winforms application coded in VS C# 2008 and want to insert a WPF window into the window pane of Winforms application. Could you explain me how this is done.

热门标签