12

MaskedTextBox を使用して、ユーザーが無効な IP アドレスを入力するのを防ぐにはどうすればよいですか? (Windowsと同じように動作させたい)。

4

6 に答える 6

21

他の答えよりもはるかに簡単です:

System.Net.IPAddress と System.Windows.Forms.MaskedTextBox を使用する

MaskedTextBox の次のプロパティを設定します。

MaskedTextBox.Mask = ###.###.###.###
MaskedTextBox.ValidatingType = typeof(System.Net.IPAddress);

テキスト ボックスが検証されるたびに、イベント MaskedTextBox.TypeValidationCompleted が発生します。イベント引数は次を示します。

  • 入力したテキストは IP アドレスとして受け入れられますか? (= System.Net.IPAddress.TryParse は OK を返しますか)
  • 文字列としてのエラーの説明
  • 解析された値 (= System.NET.IpAddress のオブジェクト
  • 解析された値のタイプ。マスクが異なる複数の MaskedTextBox がある場合に必要

このイベントを受け取ると、値を使用するか、値の問題点をユーザーに通知するかを決定できます。

于 2013-09-23T14:11:14.027 に答える
18

これを試して:

IPAddress ipAddress;
if (IPAddress.TryParse(maskedTextBoxY.Text, out ipAddress))
{
    //valid ip
 }
else
 {
    //is not valid ip
}

System.Net注: 使用するには、名前空間をインポートする必要があります:

using System.Net;
于 2011-10-28T02:41:39.403 に答える
5

ユーザー入力を検証するには、REGEX を使用することをお勧めします。次に例を示します。

         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
于 2011-10-28T00:47:30.750 に答える
2

マスクを次のように設定します。###.###.###.###

次のように表示されます。

ここに画像の説明を入力

于 2011-10-28T00:56:16.153 に答える
1

Windows のものを模倣した IP マスク テキスト ボックスを作成しました。

同じ幅、高さを持ち、ユーザーが 255 を超える値を入力できないようにしたり、ジャンプ ボックスなどを使用したりします。まだ必要で、試してみたい場合は、次の場所にあります。

https://github.com/RuvenSalamon/IP-MaskedTextBox

(これが自己宣伝と見なされるかどうかはわかりませんが、オープンソースなので問題ないと思います。)

于 2016-04-20T18:51:02.573 に答える