Làm cách nào để sử dụng MaskedTextBox để ngăn người dùng nhập địa chỉ IP không hợp lệ? (Tôi muốn nó hoạt động giống như Windows).Địa chỉ IP trong MaskedTextBox?
Trả lời
Hãy thử điều này:
IPAddress ipAddress;
if (IPAddress.TryParse(maskedTextBoxY.Text, out ipAddress))
{
//valid ip
}
else
{
//is not valid ip
}
lưu ý: để sử dụng nó , bạn cần nhập không gian tên System.Net
:
using System.Net;
Tốt hơn nên sử dụng REGEX để xác thực tính năng nhập của người dùng. Dưới đây là một ví dụ:
string pattern = @"\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b";
string ip1 = "192.168.0.1";
string ip2 = "302.0.0.1";
Regex.IsMatch(ip1, pattern); // returns true
Regex.IsMatch(ip2, pattern); // returns false
Đặt mặt nạ để: ###.###.###.###
Sẽ hiển thị như thế này:
và IPv6 là gì? – Woot4Moo
@ Woot4Moo Tôi không nghĩ rằng có thể được thực hiện với một mặt nạ duy nhất. Bạn sẽ cần phải nghe để nhấn phím và xử lý các ký tự được/không được phép – Icarus
đúng, MaskedTextBox không cho phép bạn thực hiện xác thực phức tạp trực tiếp. Bạn có thể sử dụng sự kiện KeyPress để đọc đầu vào của người dùng và xác định trong đó là hợp lệ. Và biểu thức Regex phù hợp sẽ giúp thực hiện tác vụ này. – Dan
đơn giản hơn nhiều so với câu trả lời khác:
Sử dụng System.Net.IPAddress và System.Windows.Forms.MaskedTextBox
thiết lập các thuộc tính sau của MaskedTextBox:
MaskedTextBox.Mask = ###.###.###.###
MaskedTextBox.ValidatingType = typeof(System.Net.IPAddress);
bất cứ khi nào hộp văn bản xác thực, sự kiện MaskedTextBox.TypeValidationCompleted được nâng lên. Đối số sự kiện hiển thị như sau:
- Văn bản được nhập có thể chấp nhận làm địa chỉ IP không? (= Không System.Net.IPAddress.TryParse trở ok)
- Mô tả các lỗi như là một chuỗi
- Giá trị phân tích cú pháp (= một đối tượng của System.NET.IpAddress
- Các loại giá trị phân tích cú pháp. Needed nếu bạn có nhiều MaskedTextBoxes với mặt nạ khác nhau
Sau khi nhận được sự kiện này, bạn có thể quyết định có nên sử dụng giá trị hoặc thông báo cho người dùng những gì là sai với giá trị.
KHÔNG hoạt động. Chỉ hoạt động cho 123.123.123.123 - tức là TẤT CẢ các ký tự hiện diện. Địa chỉ IP của "123.4.5.6" sẽ xuất hiện dưới dạng "123.456 .." –
Đăng ký sự kiện KeyDown và phản hồi cách bạn muốn làm đầu vào nếu nhà điều hành nhấn một dấu chấm/dấu chấm phẩy/dấu phẩy/mũi tên phải/tab, v.v. –
không có giải pháp phức tạp cho câu hỏi này Tôi nghĩ rằng @HaraldDutch câu trả lời là gần nhất, nhưng nó là không thích từ đầu vào với ký tự khoảng trắng. Sử dụng hướng dẫn bổ sung:
IPAdressBox.ResetOnSpace = false;
vấn đề được giải quyết chung, nhưng phức tạp hơn là triển khai phương pháp phân tích cú pháp tùy chỉnh kiểu dữ liệu riêng.
public class IPValidator
{
public static IPValidator Parse(string input)
{
Regex regexpr = new Regex(@" ");
Match match = regexpr.Match(input);
if (match.Success)
return new IPValidator();
else throw new ArgumentException(input);
}
}
Trường hợp regexpr là cách cụ thể để xác thực IP. Sau đó, nó có thể được sử dụng như ValidatingType:
IPAdressBox.ValidatingType = typeof(IPValidator);
Tôi đã tạo hộp văn bản mặt nạ IP bắt chước hộp văn bản Windows.
Có cùng chiều rộng, chiều cao, ngăn người dùng nhập> 255 giá trị, hộp nhảy, v.v ... v.v ... Nếu bạn vẫn cần nó và muốn thử nó ra nó ở đây:
https://github.com/RuvenSalamon/IP-MaskedTextBox
(Tôi không biết nếu điều này được tính như thúc đẩy tự nhưng nó mã nguồn mở vì vậy tôi nghĩ đó là ok.)
- 1. Tăng địa chỉ IP
- 2. Địa chỉ IP từ sk_buff
- 3. trim địa chỉ ip octet
- 4. Tìm địa chỉ IP trong iphone
- 5. Phân tích địa chỉ IP trong .NET
- 6. Chuyển đổi [địa chỉ NSNetservice] để ip địa chỉ chuỗi
- 7. Cách lấy địa chỉ IP tăng :: asio :: ip :: tcp :: socket?
- 8. Đảo ngược ip, tìm tên miền trên địa chỉ IP
- 9. Số nguyên cho Địa chỉ IP - C
- 10. Dns.GetHostEntry trả về nhiều địa chỉ IP
- 11. Nhận địa chỉ IP cục bộ
- 12. Tạo Địa chỉ IP Ngẫu nhiên
- 13. Dải địa chỉ IP riêng tư
- 14. localhost vs địa chỉ ip thực
- 15. Nhận địa chỉ IP của người dùng
- 16. Cách nghe trên nhiều địa chỉ IP?
- 17. Địa chỉ IP bị khóa PHP
- 18. Vị trí địa lý dựa trên Địa chỉ IP - PHP
- 19. Giải quyết địa chỉ IP từ DNS trong C#
- 20. Netty: nhận địa chỉ ip từ xa trong messageReceived
- 21. Nhận địa chỉ IP của máy chủ trong ASP.NET?
- 22. Cách so sánh dải địa chỉ IP trong C#?
- 23. Địa chỉ IP của khách hàng trong ASP.NET (.asmx) webservices
- 24. tìm tất cả địa chỉ ip trong mạng
- 25. Cách xác thực địa chỉ IP trong C#
- 26. Vị trí theo địa chỉ IP trong nhà
- 27. Chuyển hướng một địa chỉ IP trong Java
- 28. Nhận địa chỉ IP của ứng dụng khách trong JSP
- 29. Cách chặn địa chỉ IP hoặc các lớp IP trong ASP.NET
- 30. Xác định địa chỉ IP và cổng của kết nối TCP/IP đến trong Erlang
Tại sao không chỉ đọc giá trị trong và tiết kiệm cho người dùng một số rắc rối? Không bao giờ làm cho người dùng làm những gì bạn có thể làm cho họ. – Woot4Moo