Tôi đã tạo một điều khiển NumericUpDown thập lục phân theo tiểu classing các NumericUpDown cơ bản và thêm các phương pháp sau đây:Tạo một điều khiển hệ thập lục phân NumericUpDown
protected override void UpdateEditText()
{
this.Text = "0x" + ((int) Value).ToString("X2");
}
này hoạt động khá tốt. Việc kiểm soát hiện nay cho thấy giá trị trong các định dạng:
0x3F
đó là chính xác những gì tôi đã sau.
Nhưng có một điều làm tôi bực mình: mỗi khi chữ -property được gán, một System.FormatException được ném. Điều này dường như không ảnh hưởng đến chức năng của kiểm soát, nhưng tôi vẫn nghĩ nó xấu xí.
Đây là đỉnh của callstack:
MyAssembly.dll HexNumericUpDown.UpdateEditText() Dòng 31 C# System.Windows.Forms.dll System.Windows.Forms.NumericUpDown.ValidateEditText!() Unknown System.Windows.Forms.dll! System.Windows.Forms.UpDownBase.Text.set (string value) Unknown
tôi có thể chỉ cần bỏ qua ngoại lệ này? Hoặc là có một cách sạch sẽ để thoát khỏi điều này?
Bạn có thể có điều gì đó đang chạy trên sự kiện TextChanged cố gắng chuyển đổi chuỗi trở lại thành một số nguyên không? – Jens
"mỗi khi thuộc tính Văn bản được chỉ định, một System.FormatException được ném" nhưng ở đâu? Đăng stacktrace. –
Xong. Tôi đã thêm dấu vết ngăn xếp. – Boris