[深入淺出WP8.1(Runtime)]文本框(TextBox)


4.4 文本框(TextBox)

文本框(TextBox)控件是表示一個可用於顯示和編輯單格式、多行文本的控件。TextBox控件常用於在表單中編輯非格式化文本,例如,如果一個表單要求輸入用戶姓名、電話號碼等,則可以使用 TextBox 控件來進行文本輸入。控件的XAML語法如下:

<TextBox .../>

TextBox的高度可以是一行,也可以包含多行。對於輸入少量純文本(如表單中的“姓名”、“電話號碼”等)而言,單行TextBox是最好的選擇。同時你也可以創建一個使用戶可以輸入多行文本的TextBox,例如,表單要求輸入較多的文字,可能需要使用支持多行文本的TextBox。設置多行文本的方法很簡單,將TextWrapping特性設置為Wrap會使文本在到達TextBox控件的邊緣時換至新行,必要時會自動擴展TextBox控件以便為新行留出空間,這點是和TextBlock控件一樣的。同時TextBox控件也可以設置文字的相關屬性(FontFamily、FontSize、FontStyle、FontWeight)。下面我們再來介紹TextBox控件中的一些特別的功能特性。

(1)支持回車鍵換行

因為TextBox控件是一個文本輸入的控件,所以它除了對自動換行的支持之外,還這次還回車鍵換行的輸入。不過在默認的情況下,TextBox控件是不支持回車鍵換行的,如果需要支持回車鍵換行,需要把把AcceptsReturn屬性設置為true。

(2)鍵盤的類型

由於Windows Phone手機並不支持第三方的輸入法軟件,所以在文本框輸入的情況下,只能夠使用系統提供的輸入法和鍵盤類型。那么TextBox控件是可以通過InputScope屬性來設置在控件輸入信息的時候所提供的鍵盤類型,比如你的TextBox文本框只是要求用戶輸入手機號碼,那么你通過設置InputScope="TelephoneNumber"來制定電話號碼的輸入鍵盤。關於鍵盤的類型可以通過枚舉InputScopeNameValue來看到所有的鍵盤類型,包括有EmailSmtpAddress(郵件地址輸入)、Url(網址輸入)、Number(數字輸入)等等。如果使用C#代碼來設置TextBox控件的鍵盤類型,代碼的編寫會稍微麻煩一點,示例代碼如下所示:

textBox1.InputScope = new InputScope();

textBox1.InputScope.Names.Add(new InputScopeName() { NameValue = InputScopeNameValue.TelephoneLocalNumber });

(3)控件頭

通常我們在創建一個輸入框的時候都需要在輸入框的上面添加相關的說明,比如“請輸入用戶名”等。那么TextBox控件會通過Header屬性來直接支持添加這個控件頭的描述說明,簡化了控件的實現。Header屬性的默認樣式是跟系統的文本框的控件頭的樣式保持一致。

(4)操作事件

TextBox控件支持三個常用的操作事件,分別是TextChanged事件(TextBox控件文本信息的改變會觸發該事件)、SelectionChanged事件(TextBox控件選擇信息的改變會觸發該事件)、Paste事件(在TextBox控件中粘貼的操作會觸發該事件)。TextChanged事件通常會用來檢查用戶輸入信息的改變,然后再獲取控件的Text屬性的信息進行相關的操作。SelectionChanged事件也是類似的作用,不過SelectionChanged事件則是檢查用戶選擇的文本信息的改變,然后獲取控件的SelectedText屬性表示選擇的文本信息,如果沒有選擇文本信息,則SelectedText的值是空的字符串。當控件中發生粘貼操作的時候會觸發Paste事件,如果有一些信息的輸入是不允許粘貼的,可以利用該事件來禁止粘貼的輸入操作。

下面給出文本框的示例:創建TextBox控件演示TextBox控件的鍵盤選擇,控件頭和操作事件的實現。
    代碼清單4-3文本框控件演示(源代碼:第4章\Examples_4_3)

MainPage.xaml文件主要代碼
------------------------------------------------------------------------------------------------------------------
    <StackPanel>
        <!--創建一個電話號碼的輸入文本框控件-->
        <TextBox InputScope="TelephoneNumber">
            <TextBox.Header>
                請輸入電話號碼:
            </TextBox.Header>
        </TextBox>
        <!--測試TextBox控件的相關操作事件-->
        <TextBox x:Name="TextBox1" TextWrapping="Wrap" AcceptsReturn ="true" Header="輸入信息:" SelectionHighlightColor="Red"
                    TextChanged="TextBox1_TextChanged"
                    SelectionChanged="TextBox1_SelectionChanged"
                    Paste="TextBox1_Paste"/>
        <TextBlock x:Name="textBlock2" Text="操作信息:" FontSize="20"/>
        <TextBlock x:Name="textBlock1" TextWrapping="Wrap" FontSize="20"/>
    </StackPanel>
MainPage.xam.cs文件主要代碼
------------------------------------------------------------------------------------------------------------------
    // 文本的信息
    string text = "";
    // 選擇的文本信息
    string selectedText = "";
    // 是否發生粘貼
    string pasteTest = "";
    // 文本變化的事件
    private void TextBox1_TextChanged(object sender, TextChangedEventArgs e)
    {
        text = TextBox1.Text;            
        ShowInformation();
    }
    // 文本選擇的事件
    private void TextBox1_SelectionChanged(object sender, RoutedEventArgs e)
    {
        selectedText = TextBox1.SelectedText;
        ShowInformation();
    }
    // 粘貼事件
    private void TextBox1_Paste(object sender, TextControlPasteEventArgs e)
    {
        text = TextBox1.Text;
        selectedText = TextBox1.SelectedText;
        pasteTest = "產生了粘貼操作";
        ShowInformation();
    }
    // 操作信息展示
    private void ShowInformation()
    {
        textBlock1.Text = "文本信息:“" + text + "”選擇的信息:“" + selectedText + "”粘貼的信息:“" + pasteTest + "";
    }

本文來源於《深入淺出Windows Phone 8.1 應用開發》

WP8.1 Runtime文章列表:http://www.cnblogs.com/linzheng/p/3998037.html

源代碼下載:http://vdisk.weibo.com/s/zt_pyrfNHb99O

歡迎關注我的微博@WP林政   微信公眾號:wp開發(號:wpkaifa)

WP8.1技術交流群:372552293


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM