日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

WP7应用开发笔记(8) IP输入框控件

發布時間:2023/12/13 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WP7应用开发笔记(8) IP输入框控件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

因為需要在手機上配置IP,我需要一個界面輸入IP地址,雖然直接使用TextBox,但是這樣不太友好,我希望能夠有和Windows網絡設置上一樣的IP輸入框。所以決定寫一個自定義控件。

?

設計控件外觀

4個TextBox和3個顯示“.”的TextBlock就可以了,結構很簡單:

?

XAML代碼如下:

?

<StackPanel Orientation="Horizontal" Height="72" >
<TextBox x:Name="TextOctet1"/>
<TextBlock Text="." />
<TextBox x:Name="TextOctet2"/>
<TextBlock Text="." />
<TextBox x:Name="TextOctet3"/>
<TextBlock Text="." />
<TextBox x:Name="TextOctet4"/>
</StackPanel>

因為IP地址里面只有數字和“.”,而且每位地址最長為3。為了限制輸入將樣式設置如下:

<UserControl.Resources>
<Style TargetType="TextBox">
<Setter Property="Width" Value="90"/>
<Setter Property="MaxLength" Value="3"/>
<Setter Property="TextAlignment" Value="Right"/>
<Setter Property="InputScope" Value="Number"/>
</Style>
<Style TargetType="TextBlock">
<Setter Property="Margin" Value="5,30,5,0"/>
</Style>
</UserControl.Resources>

?InputScope設置為Number,限制輸入數字和.。

InputScope

復習一下WP里面有一個叫做InputScope的依賴屬性,這個是軟輸入面板設置 在WP里面非常有用的屬性。支持的名稱和功能如下:


AddressCity 城市地址的文本輸入模式。


AddressCountryName 國家/地區的名稱的文本輸入模式。


AddressCountryShortName 國家/地區的縮寫名稱的文本輸入模式。


AddressStateOrProvince 省/市/自治區的文本輸入模式。


AddressStreet 街道地址的文本輸入模式。


AlphanumericFullWidth 字母數字全角字符的文本輸入模式。


AlphanumericHalfWidth 字母數字半角字符的文本輸入模式。


ApplicationEnd 不支持。僅限在 用于 Windows Phone 的 Silverlight 中內部使用。


Bopomofo 漢語拼音語音轉換系統的文本輸入模式。


Chat 用于文本消息傳遞的 SIP 布局,可識別預定義的縮寫。僅在 用于 Windows Phone 的 Silverlight 中受支持。


CurrencyAmount 貨幣數量的文本輸入模式。


CurrencyAmountAndSymbol 貨幣數量和符號的文本輸入模式。


CurrencyChinese 中國貨幣的文本輸入模式。


Date 日歷日期的文本輸入模式。


DateDay 日歷日期中數字日期的文本輸入模式。


DateDayName 日歷日期中日期名稱的文本輸入模式。


DateMonth 日歷日期中數字月份的文本輸入模式。


DateMonthName 日歷日期中月份名稱的文本輸入模式。


DateYear 日歷日期中年份的文本輸入模式。


Default 輸入命令的默認處理。


Digits 數字的文本輸入模式。


EmailNameOrAddress 用于電子郵件名稱或地址的 SIP 布局。僅在 用于 Windows Phone 的 Silverlight 中受支持。


EmailSmtpAddress 簡單郵件傳輸協議 (SMTP) 電子郵件地址的文本輸入模式。


EmailUserName 電子郵件用戶名的文本輸入模式。


EnumString 不支持。僅限在 用于 Windows Phone 的 Silverlight 中內部使用。


FileName? 文件名的文本輸入模式。


FullFilePath 文件完整路徑的文本輸入模式。


Hanja 朝鮮文漢字字符的文本輸入模式。


Hiragana 平假名書寫體系的文本輸入模式。


KatakanaFullWidth 全角片假名字符的文本輸入模式。


KatakanaHalfWidth 半角片假名字符的文本輸入模式。


LogOnName 登錄名的文本輸入模式。


Maps 用于輸入地圖位置的 SIP 布局。僅在 用于 Windows Phone 的 Silverlight 中受支持。


NameOrPhoneNumber 用于 SMS“至”字段的 SIP 布局。僅在 用于 Windows Phone 的 Silverlight 中受支持。


Number 數字的文本輸入模式。


NumberFullWidth 全角數字的文本輸入模式。


OneChar 某個字符的文本輸入模式。


Password 密碼的文本輸入模式。


PersonalFullName 個人的全名的文本輸入模式。


PersonalGivenName 個人的名字的文本輸入模式。


PersonalMiddleName 個人的中間名的文本輸入模式。


PersonalNamePrefix 個人姓名前綴的文本輸入模式。


PersonalNameSuffix 個人姓名后綴的文本輸入模式。


PersonalSurname 個人的姓的文本輸入模式。


PhraseList 詞組列表的文本輸入模式。


PostalAddress 郵寄地址的文本輸入模式。


PostalCode 郵政編碼的文本輸入模式。


Private 不支持。僅限在 用于 Windows Phone 的 Silverlight 中的內部使用。


RegularExpression 正則表達式的文本輸入模式。


Search 用于搜索查詢的 SIP 布局。僅在 用于 Windows Phone 的 Silverlight 中受支持。


Srgs 語音識別語法規范 (SRGS) 的文本輸入模式。


TelephoneAreaCode 區號的文本輸入模式。


TelephoneCountryCode 電話的國家/地區代碼的文本輸入模式。


TelephoneLocalNumber 本地電話號碼的文本輸入模式。


TelephoneNumber 電話號碼的文本輸入模式。


Text 用于標準文本輸入的軟件輸入面板 (SIP) 布局。僅在 用于 Windows Phone 的 Silverlight 中受支持。


Time 時間的文本輸入模式。


TimeHour 小時的文本輸入模式。


TimeMinorSec 時間的分鐘或秒的文本輸入模式。


Url 統一資源定位符 (URL) 的文本輸入模式。


Xml XML 的文本輸入模式。


Yomi 不支持。僅限在 用于 Windows Phone 的 Silverlight 中內部使用。

?

控件代碼實現

先定義一下叫IPAddress的依賴屬性,復習一下:

public static readonly DependencyProperty IPAddressProperty =DependencyProperty.Register("IPAddress", typeof(string), typeof(IPBox),new PropertyMetadata(String.Empty, IPPropertyChangedCallback));private static void IPPropertyChangedCallback(DependencyObject sender, DependencyPropertyChangedEventArgs arg){var value = (string)arg.NewValue;if (string.IsNullOrWhiteSpace(value)) return;var ipBox = (IPBox)sender;ipBox.SetIPAddress(value);}[Description("獲取或設置IP")][Category("Common Properties")]public string IPAddress{get { return (string)GetValue(IPAddressProperty); }set { SetValue(IPAddressProperty, value); }}

需要實現的功能有

  • 限制輸入范圍為0~255
  • 輸入“.”自動將焦點跳到下一個TextBox
  • 輸入到3個數字的時候,自動將焦點跳到下一個TextBox
  • 按Back鍵如果當前TextBox沒有文本,需要自動將焦點跳到前一個TextBox

?

實現這些功能需要對每個TextBox監聽TextChanged和KeyDown事件,并作相應處理。

完整代碼如下:

View Code public partial class IPBox
{
public static readonly DependencyProperty IPAddressProperty =
DependencyProperty.Register("IPAddress", typeof(string), typeof(IPBox),
new PropertyMetadata(String.Empty, IPPropertyChangedCallback));

private static void IPPropertyChangedCallback(DependencyObject sender, DependencyPropertyChangedEventArgs arg)
{
var value = (string)arg.NewValue;
if (string.IsNullOrWhiteSpace(value)) return;
var ipBox = (IPBox)sender;
ipBox.SetIPAddress(value);
}

[Description("獲取或設置IP")]
[Category("Common Properties")]
public string IPAddress
{
get { return (string)GetValue(IPAddressProperty); }
set { SetValue(IPAddressProperty, value); }
}

private readonly TextBox[] textBoxs;
private readonly string[] ipParts;

public IPBox()
{
InitializeComponent();

textBoxs = new[]
{
TextOctet1,
TextOctet2,
TextOctet3,
TextOctet4
};
ipParts = new string[4];
for (int i = 0; i < 4; i++)
{
var box = textBoxs[i];
box.Tag = i;
box.TextChanged += OnTextChanged;
box.KeyDown += OnKeyDown;
}
}

private void UpdateIPAddress()
{
for (int i = 0; i < 4; i++)
{
ipParts[i] = textBoxs[i].Text;
}
if (ipParts.Any(string.IsNullOrWhiteSpace)) return;
IPAddress = string.Format("{0}.{1}.{2}.{3}", TextOctet1.Text, TextOctet2.Text, TextOctet3.Text,
TextOctet4.Text);
}

private void SetIPAddress(string value)
{
IPAddress tmp;
if (!System.Net.IPAddress.TryParse(value, out tmp)) return;

string[] octets = value.Split('.');
for (int i = 0; i < 4; i++)
{
if (ipParts[i] != octets[i])
{
ipParts[i] = octets[i];
textBoxs[i].Text = octets[i];
}
}


}

private void OnTextChanged(object sender, TextChangedEventArgs e)
{
var textBox = (TextBox)sender;
var index = (int)textBox.Tag;

if (string.IsNullOrWhiteSpace(textBox.Text)) return;
if (int.Parse(textBox.Text) > 255)
{
textBox.Text = "255";
textBox.Select(3, 0);
}

if (ipParts[index] == textBox.Text) return;
if (textBox.Text.Length == 3)
{
NextFocus(index);
}
UpdateIPAddress();
}

private void OnKeyDown(object sender, KeyEventArgs e)
{
var textBox = (TextBox)sender;
if (e.PlatformKeyCode == 190) //.
{
e.Handled = true;
if (!string.IsNullOrEmpty(textBox.Text))
{
NextFocus((int)textBox.Tag);
}
return;
}
if (e.Key == Key.Back)
{
if (string.IsNullOrEmpty(textBox.Text))
{
e.Handled = true;
PrevFocus((int)textBox.Tag);
}
}
}

private void NextFocus(int index)
{
if (index >= 3) return;
var box = textBoxs[index + 1];
box.Focus();
box.Select(box.Text.Length, 0);
}

private void PrevFocus(int index)
{
if (index < 1) return;
var box = textBoxs[index - 1];
box.Focus();
box.Select(box.Text.Length, 0);
}
}


?

轉載于:https://www.cnblogs.com/kiminozo/archive/2012/01/26/2329574.html

總結

以上是生活随笔為你收集整理的WP7应用开发笔记(8) IP输入框控件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲精品国产欧美在线观看 | 91丨九色丨海角社区 | 精品无码久久久久久国产 | 在线观看污污视频 | av免费网站观看 | 欧美三日本三级少妇三级99观看视频 | 一级做a免费视频 | 亚洲免费不卡视频 | 国产制服av | 亚洲精品中文字幕乱码三区 | 久久婷五月天 | 日本wwwxxx | 青青视频二区 | 日本精品99 | 高清一区在线观看 | 久久亚洲精精品中文字幕早川悠里 | 国产精品久久久久久一区二区 | 国产3p精品一区 | 顶级黑人搡bbw搡bbbb搡 | 成人国产三级 | 性色av一区二区三区 | 中文字幕国产一区二区 | 天天爽夜夜爽视频 | 在线观看亚洲一区二区 | 在线不卡欧美 | 亚洲porn | av色综合| 嫩草视频在线观看免费 | 久草免费资源 | 天堂网www.| 四虎国产精品成人免费入口 | 求一个黄色网址 | 操你啦免费视频 | 国产一区二区三区免费在线观看 | 欧美日韩激情在线一区二区三区 | 天天超碰 | 欧美精品一区二区视频 | 草草草在线观看 | 91精品国产高清 | 国产一区二区免费看 | 久草视频在线资源 | 国产绿帽刺激高潮对白 | 亚洲欧美日韩精品一区 | 男人爱看的网站 | 日日夜夜草 | 不卡影院 | 国产手机av| 日本在线观看免费 | 91久久精品国产91性色69 | 国产精品日韩欧美一区二区三区 | 国产小视频在线看 | 尤物精品视频在线观看 | 欧美精品久久天天躁 | 五月天激情视频在线观看 | 欧美黄色免费看 | 五月天亚洲综合 | 最近最新最好看的2019 | 日本一本在线观看 | 国内精品在线播放 | 黄色小网站在线观看 | 伊人激情影院 | 毛片毛片毛片 | 欧美孕妇性xx | 九九在线观看免费高清版 | 97久久精品人人澡人人爽 | 亚洲成在线 | 久久精品这里有 | 中文字幕网站在线观看 | 69网站在线观看 | 亚洲精品国产suv | 欧美日韩精品亚洲精品 | 日日燥夜夜燥 | 少妇日韩| 天天躁日日躁狠狠躁免费麻豆 | 97视频免费在线观看 | 亚洲欧美第一视频 | 国产午夜无码精品免费看奶水 | 黄色片99| 激情 小说 亚洲 图片 伦 | 亚洲熟女一区二区三区 | 日韩黄色在线播放 | 香蕉传媒 | 国产av一区精品 | 欧美mv日韩mv国产 | 黄色三级网站 | av在线播放网| 在线观看日韩av | 黄色福利社 | 包射屋 | 女攻总攻大胸奶汁(高h) | 色呦呦 | 91毛片视频| 欧美精品一区二区性色a+v | 久啪视频| 肉色欧美久久久久久久免费看 | 国产农村妇女精品一二区 | 夜夜操女人| 中文字幕无码精品亚洲 | 3d动漫精品h区xxxxx区 |