从右到左在文本框中输入?

时间:2013-07-04 04:50:00

标签: c# .net winforms textbox maskedtextbox

我有一个带掩码的货币Textbox。 掩码在textbox中显示为--------.--

因此,用户在掩码上输入数字。

现在客户说他不想从左到右输入信件。 他想从右到左打字。

与计算器中的相似。

现在我尝试更改textbox的{​​{1}}属性,但这对我的原因没有帮助。

最后,我处理关键事件以手动更改位置。 我能够改变位置,但却完成了逻辑。

以下是我的代码的样子:

righttoleft

有更好的方法吗?如果不是我应该如何完成逻辑?

3 个答案:

答案 0 :(得分:4)

文本框中有一个属性:

T.RightToLeft = RightToLeft.Yes

答案 1 :(得分:2)

我已经为你写了这段代码;请试一试:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        string mychar = "000000";
        string mtxt;
        int mypos = 6;
        public Form1()
        {
            InitializeComponent();
        }

    private void Form1_Load(object sender, EventArgs e)
    {
        maskedTextBox1.Text = mychar;
    }

    private void maskedTextBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            mtxt = mtxt + e.KeyChar;
            mypos--;
            mychar = mychar.Remove(mypos, mtxt.Length);
            mychar = mychar.Insert(mypos, mtxt);
            maskedTextBox1.Text = mychar;
        }
    }
}

答案 2 :(得分:0)

使用maskedTextBox尝试此操作。

设置TextMaskFormat Property = IncludePrompt

    private void maskedTextBox1_Click(object sender, EventArgs e)
    {
        maskedTextBox1.SelectionStart = maskedTextBox1.Mask.Length + 1;
    }

    private void maskedTextBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar != (char) Keys.Back)
        {
            String a = maskedTextBox1.Text + e.KeyChar;
            maskedTextBox1.Text = a.Substring(1, a.Length - 1);
            maskedTextBox1.SelectionStart = maskedTextBox1.Mask.Length + 1;
        }
    }

    private void maskedTextBox1_KeyUp(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Back)
        {
            maskedTextBox1.Text = "_" + maskedTextBox1.Text;
            maskedTextBox1.SelectionStart = maskedTextBox1.Mask.Length + 1;
        } 
    }