2013-07-04 58 views
6

Tôi có Đơn vị tiền tệ Textbox bằng mặt nạ. Mặt nạ được hiển thị trong textbox--------.--Từ phải sang trái khi nhập văn bản?

Vì vậy, loại người dùng bằng chữ số trên mặt nạ.

Bây giờ khách hàng nói rằng anh ấy không muốn nhập thư từ trái sang phải. Anh ấy muốn nhập từ phải sang trái.

Tương tự như những gì chúng tôi có trong máy tính.

Bây giờ tôi đã thử thay đổi thuộc tính's righttoleft nhưng điều đó không giúp ích cho tôi.

Cuối cùng, tôi bị kẹt với việc xử lý sự kiện quan trọng để thay đổi vị trí theo cách thủ công. Tôi có thể thay đổi vị trí nhưng bị kẹt hoàn thành logic.

Sau đây là cách mã của tôi trông giống như:

void Textbx_KeyDown(object sender, KeyEventArgs e) 
    { 


     String temp = T.Text; 
     string temp2 = T.Text; 

     int CursorIndex = T.SelectionStart - 1; 

     for (int i = 0; i <= CursorIndex; i++) 
     { 
      if (i == 7) 
      { 

       temp2 = temp2.Insert(i, temp[i + 2].ToString()); 
       temp2 = temp2.Remove(i, 2); 

       //i = i + 2; 
      } 
      else if (CursorIndex == i) 
      { 
       temp2 = temp2.Remove(i, 1); 
       temp2 = temp2.Insert(i, temp[i + 1].ToString()); 
      } 

      else 
      { 
       // T.Text = T.Text.Insert(i + 1, "_"); 

       temp2 = temp2.Insert(i, temp[i + 1].ToString()); 
       temp2 = temp2.Remove(i + 1, 1); 

      } 

     } 
     T.Text = temp2; 
     // T.Text = T.Text.Insert(CursorIndex-1, temp[CursorIndex].ToString()); 
     if (CursorIndex != -1) 
      T.SelectionStart = CursorIndex - 1; 


    } 

Có cách nào tốt hơn để làm điều này? Nếu không làm thế nào tôi nên đi về hoàn thành logic?

Trả lời

3

Có một bất động sản cho rằng trong hộp văn bản:

T.RightToLeft = RightToLeft.Yes 
+1

Hi cố gắng đó, nhưng khi tôi làm điều đó mặt nạ mà tôi có những thay đổi để "--.--------" từ "------ --.-- ". Vì vậy, ở đây nó làm điều tương tự như trước đó là đánh máy từ những nơi chữ số về phía thập phân. Tôi muốn cho phép người dùng nhập từ thập phân, sau đó tiến tới đơn vị, hàng chục, v.v. Để nhập 6.95. con trỏ sẽ ở bên phải và người dùng sẽ chỉ cần gõ 695 và nó sẽ hiển thị là 6.95. – user1331032

2

Tôi đã viết mã này cho bạn; vui lòng thử:

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; 
     } 
    } 
} 
0

thử dùng hộp mực đeo mặt nạ.

bộ TextMaskFormat tài sản = 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; 
     } 
    }