Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 19 kết quả

Đề tài: Chuyển số trên textbox thành kiểu định dạng tiền ngay khi nhập vào

  1. #1
    Ngày gia nhập
    08 2011
    Bài viết
    38

    Mặc định Chuyển số trên textbox thành kiểu định dạng tiền ngay khi nhập vào

    Chào cả nhà, cả nhà cho mình hỏi kiểu thế này trong C# có thể thực hiện được không nhé. Việc là thế này, em có 1 textbox, textbox này là textbox dùng để nhập số tiền (bằng số) ví dụ nhập 12345678. Có cách này khi nhập vào textbox thì text trong textbox này thể hiện là kiểu định dạng là tiền, tức 12.345.678 (hoặc 12,345,678) hay không?
    Lưu ý là chuyển định dạng này ngay khi trong quá trình nhập số luôn nha (mục đích là để xem tiền nhập vào cho đúng, không nhầm lẫn được , nhỡ nhập 1000000 mà dư hoặc thiếu 1 số 0 thì toi )
    C# một phần tất yếu của cuộc sống
    Cà phê xem phim 3D Đà Nẵng - http://3dsmartcoffee.com.vn
    <@ Bản đồ dẫn đường - Click here @>

  2. #2
    Ngày gia nhập
    05 2008
    Bài viết
    115

    Trích dẫn Nguyên bản được gửi bởi philipdn Xem bài viết
    Chào cả nhà, cả nhà cho mình hỏi kiểu thế này trong C# có thể thực hiện được không nhé. Việc là thế này, em có 1 textbox, textbox này là textbox dùng để nhập số tiền (bằng số) ví dụ nhập 12345678. Có cách này khi nhập vào textbox thì text trong textbox này thể hiện là kiểu định dạng là tiền, tức 12.345.678 (hoặc 12,345,678) hay không?
    Lưu ý là chuyển định dạng này ngay khi trong quá trình nhập số luôn nha (mục đích là để xem tiền nhập vào cho đúng, không nhầm lẫn được , nhỡ nhập 1000000 mà dư hoặc thiếu 1 số 0 thì toi )
    bạn bắt sự kiện KeyPress của textbox để chặn chỉ cho nhập số

    Visual C# Code:
    1. private void txtTotalAmount_KeyPress(object sender, KeyPressEventArgs e)
    2. {
    3.     if (!char.IsDigit(e.KeyChar) && e.KeyChar != (char)Keys.Back)
    4.         e.Handled = true;
    5. }

    sau đó ở sự kiện TextChanged bạn dùng string.Format để định dạng

    Visual C# Code:
    1. private void txtTotalAmount_TextChanged(object sender, EventArgs e)
    2. {
    3.     txtTotalAmount.Text = string.Format("{0:0,0}", decimal.Parse(txtTotalAmount.Text));
    4.     txtTotalAmount.SelectionStart = txtTotalAmount.Text.Length;
    5. }
    Ebooks dành cho dế yêu của bạn: http://sachdidong.com/
    Góc nhỏ của tôi: http://seekill.com/

  3. #3
    Ngày gia nhập
    08 2011
    Bài viết
    38

    Trích dẫn Nguyên bản được gửi bởi seekill Xem bài viết
    bạn bắt sự kiện KeyPress của textbox để chặn chỉ cho nhập số

    Visual C# Code:
    1. private void txtTotalAmount_KeyPress(object sender, KeyPressEventArgs e)
    2. {
    3.     if (!char.IsDigit(e.KeyChar) && e.KeyChar != (char)Keys.Back)
    4.         e.Handled = true;
    5. }

    sau đó ở sự kiện TextChanged bạn dùng string.Format để định dạng

    Visual C# Code:
    1. private void txtTotalAmount_TextChanged(object sender, EventArgs e)
    2. {
    3.     txtTotalAmount.Text = string.Format("{0:0,0}", decimal.Parse(txtTotalAmount.Text));
    4.     txtTotalAmount.SelectionStart = txtTotalAmount.Text.Length;
    5. }
    Thank bạn, nhưng bạn cho mình hỏi txtTotalAmount.SelectionStart = txtTotalAmount.Text.Length; có nghĩa là gì vậy.
    Và khi nhập số rồi xóa đến chổ có dấu "," thì báo lỗi bạn à
    C# một phần tất yếu của cuộc sống
    Cà phê xem phim 3D Đà Nẵng - http://3dsmartcoffee.com.vn
    <@ Bản đồ dẫn đường - Click here @>

  4. #4
    Ngày gia nhập
    05 2008
    Bài viết
    115

    Trích dẫn Nguyên bản được gửi bởi philipdn Xem bài viết
    Thank bạn, nhưng bạn cho mình hỏi txtTotalAmount.SelectionStart = txtTotalAmount.Text.Length; có nghĩa là gì vậy.
    Và khi nhập số rồi xóa đến chổ có dấu "," thì báo lỗi bạn à
    Code:
    txtTotalAmount.SelectionStart = txtTotalAmount.Text.Length;
    Cái này sẽ đưa dấu nháy xuống cuối. Còn cái lỗi kia sao mình lại k gặp nhỉ :-?
    Ebooks dành cho dế yêu của bạn: http://sachdidong.com/
    Góc nhỏ của tôi: http://seekill.com/

  5. #5
    Ngày gia nhập
    08 2011
    Bài viết
    38

    Trích dẫn Nguyên bản được gửi bởi seekill Xem bài viết
    Code:
    txtTotalAmount.SelectionStart = txtTotalAmount.Text.Length;
    Cái này sẽ đưa dấu nháy xuống cuối. Còn cái lỗi kia sao mình lại k gặp nhỉ :-?
    Hihi, mình check được roài bạn, lỗi do mình Thanks bạn nhiều
    C# một phần tất yếu của cuộc sống
    Cà phê xem phim 3D Đà Nẵng - http://3dsmartcoffee.com.vn
    <@ Bản đồ dẫn đường - Click here @>

  6. #6
    Ngày gia nhập
    10 2010
    Bài viết
    518

    Mặc định Chuyển số trên textbox thành kiểu định dạng tiền ngay khi nhập vào

    tối qua spam -> câu dc 2 bài thì bị mod shift+del mất dạng-tiếc quá . Code chuẩn này:
    Code:
            private void textBox1_KeyUp(object sender, KeyEventArgs e)
            {
                string str = textBox1.Text;
                int start=textBox1.Text.Length - textBox1.SelectionStart;
                str = str.Replace(".", "");
                textBox1.Text = FormatMoney(str);
                textBox1.SelectionStart = -start + textBox1.Text.Length;
            }
            string FormatMoney(object money)
            {
                string str = money.ToString();
                string pattern = @"(?<a>\d*)(?<b>\d{3})*";
                Match m = Regex.Match(str, pattern, RegexOptions.RightToLeft);
                StringBuilder sb = new StringBuilder();
                foreach (Capture i in m.Groups["b"].Captures)
                {
                    sb.Insert(0, "." + i.Value);
                }
                sb.Insert(0, m.Groups["a"].Value);
                return sb.ToString().Trim('.');
            }
    Dùng code này thì không giới hạn độ lớn của số, dấu nháy luôn ở tại vị trí gõ(ví dụ dấu nháy đang ở giữa số 2 & 3 trong số 123 thì khi gõ thêm số 4 dấu nháy sẽ ở giữa 4 & 3 chứ k bị chuyển về cuối như code trên.=> quảng cáo + dìm hàng ^^

  7. #7
    Ngày gia nhập
    10 2008
    Bài viết
    7

    cái này nếu mình nhập có một số thì nó hiện thêm số 0 phía trước(lun có ít nhất 2 chữ số) làm sao khi mình nhập 1 số thì nó cũng chỉ hiện một số vậy bạn?

  8. #8
    Ngày gia nhập
    10 2010
    Bài viết
    518

    Trích dẫn Nguyên bản được gửi bởi 935017555 Xem bài viết
    cái này nếu mình nhập có một số thì nó hiện thêm số 0 phía trước(lun có ít nhất 2 chữ số) làm sao khi mình nhập 1 số thì nó cũng chỉ hiện một số vậy bạn?
    Chắc có nhầm lẫn roài.

  9. #9
    Ngày gia nhập
    08 2010
    Nơi ở
    bình dương
    Bài viết
    275

    Thank nha mình đang cần cái này

  10. #10
    Ngày gia nhập
    12 2008
    Bài viết
    1

    Sao không có sự kiện SelectionStart ta?

Các đề tài tương tự

  1. HTC EVO 3D xem video 3D ngay trên điện thoại giá tốt nhất
    Gửi bởi 16thang4 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 09-09-2012, 08:52 PM
  2. So sánh 1 số đã nhập trên textbox với 1 số trong cột kiểu int trên SQL
    Gửi bởi dmttuan247 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 19-08-2012, 08:54 PM
  3. Tìm kiếm ngay sau khi gõ xong vào textbox trên web như thế nào?
    Gửi bởi develop trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 6
    Bài viết cuối: 12-05-2012, 03:21 PM
  4. Chuyển focus sang textbox khác khi nhập liệu xong?
    Gửi bởi lenhuyencntt trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 15
    Bài viết cuối: 03-07-2010, 02:42 PM
  5. Chỉ cho nhập 0 và 1 từ bàn phím vào textbox trên C#?
    Gửi bởi thanhcuong_cn trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 08-04-2010, 10:46 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn