โค้ด ครับ
[Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้namespace TORServices.Forms
{
[ToolboxBitmap(typeof(TextBox))]
public class TextBoxNumber : TextBox
{
public TextBoxNumber()
{
}
private int _dec = 1;
[System.ComponentModel.Browsable(true)]
[System.ComponentModel.DefaultValue(1)]
[System.ComponentModel.Category("Behavior")]
[System.ComponentModel.Description("Decimal number")]
public int Decimal
{
get { return _dec; }
set
{
_dec = (Convert.ToInt16(value) < 1) ? 1 : Convert.ToInt16(value);
Text = Convert.ToDouble(0+Text).ToString("N" + _dec);
}
}
protected override void OnLeave(EventArgs e)
{
base.OnLeave(e);
double v = double.Parse(Text);
Text = v.ToDouble().ToString("N"+ _dec);
}
protected override void OnKeyPress(KeyPressEventArgs e)
{
base.OnKeyPress(e);
if (!Char.IsDigit(e.KeyChar) && e.KeyChar != '\b' && e.KeyChar != '.')
{
e.Handled = true;
}
if (e.KeyChar == '.' && Text.Contains("."))
{
e.Handled = true;
}
if (e.KeyChar == '-' && Text.Contains("-")) e.Handled = true;
}
}
}
หลักๆ ที่สร้าง TextBoxNumber ขึ้นมาเพื่อใช้งาน TextBox ให้พิมพ์แค่ตัวเลข . - ได้แค่นั้นครับ
แต่เกิดปัญหา ดังนี้ ครับ
1. เมื่อรับ ข้อมูล หรือ เปิดหน้ามา จะไม่เปลี่ยน เป็น จุดทศนิยม และ ไม่มี คอมม่า(,) ครับ
2. เมื่อทำการแก้ไขข้อมูลแล้ว มีจุดทศนิยม แต่ ไม่มี คอมม่า(,) ครับ
ผมลองใช้ TextChanged แล้ว ปรากฎว่า มันจะกระโดดไปมา เวลาพิมพ์ ครับ
ไม่ทราบต้องแก้ยังไง
หรือหาก มี control ที่ใช้แทนได้ก็ยิ่งดี ครับ
อยากได้แค่ ตั้งค่าจำนวน จุดทศนิยมได้/ใส่ , ได้/ใส่สกุลเงิน ได้
แค่นั้นครับ
C# ติดปัญหาเรื่อง TextBox ครับ
[Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้
หลักๆ ที่สร้าง TextBoxNumber ขึ้นมาเพื่อใช้งาน TextBox ให้พิมพ์แค่ตัวเลข . - ได้แค่นั้นครับ
แต่เกิดปัญหา ดังนี้ ครับ
1. เมื่อรับ ข้อมูล หรือ เปิดหน้ามา จะไม่เปลี่ยน เป็น จุดทศนิยม และ ไม่มี คอมม่า(,) ครับ
2. เมื่อทำการแก้ไขข้อมูลแล้ว มีจุดทศนิยม แต่ ไม่มี คอมม่า(,) ครับ
ผมลองใช้ TextChanged แล้ว ปรากฎว่า มันจะกระโดดไปมา เวลาพิมพ์ ครับ
ไม่ทราบต้องแก้ยังไง
หรือหาก มี control ที่ใช้แทนได้ก็ยิ่งดี ครับ
อยากได้แค่ ตั้งค่าจำนวน จุดทศนิยมได้/ใส่ , ได้/ใส่สกุลเงิน ได้
แค่นั้นครับ