zoukankan      html  css  js  c++  java
  • WinStore控件之TextBox

    1 TextBox简单实例

    内容摘要:包含文本的选中,弹出什么类型的键盘,回车隐藏键盘,

    <Grid Name="root" Background="Transparent">
                <StackPanel Margin="120 0 0 0">
                    <!--
                    AcceptsReturn - 是否接受回车符
                    IsReadOnly - 是否只读
                    SelectedText - 选中的文本内容
                -->
                    <TextBox Name="txtDemo" AcceptsReturn="True" TextWrapping="Wrap" MaxLength="50" TextAlignment="Center" HorizontalAlignment="Left" Width="200" Height="100" Text="webabcd" Loaded="txt_Loaded_1" />
    
                    <!--用于显示 txt 中被选中的文本内容-->
                    <TextBox Name="txtReadOnly" IsReadOnly="True" Text="{Binding SelectedText, ElementName=txt}" HorizontalAlignment="Left" Width="200" Height="100" Margin="0 10 0 0" />
    
                    <!--
                    InputScope - 指定 SIP(Soft Input Panel)的类型
                -->
                    <TextBox InputScope="Number" FlowDirection="RightToLeft" HorizontalAlignment="Left" Margin="0 10 0 0" />
    
                    <!--
                    后台设置此 TextBox 的 InputScope
                -->
                    <TextBox Name="txtInputScope" HorizontalAlignment="Left" Margin="0 10 0 0"  KeyDown="txtInputScope_KeyDown_1"/>
                </StackPanel>
            </Grid>

    后台代码:

    private void txt_Loaded_1(object sender, RoutedEventArgs e)
            {
                // 让 txtDemo 获取焦点
                txtDemo.Focus(Windows.UI.Xaml.FocusState.Programmatic);
                // 将 txtDemo 中的文本从第 3 个字符开始的一共 4 个字符设置为选中状态
                txtDemo.Select(3, 4);
    
                /*
                 * 与文本操作相关的属性和方法还有: SelectionStart, SelectionLength, SelectedText, SelectAll(), Select(int start, int length), GetRectFromCharacterIndex(int charIndex, bool trailingEdge)
                 */
            }
    
            void TextBoxDemo_Loaded(object sender, RoutedEventArgs e)
            {
                // 设置 txtInputScope 的 InputScope
                InputScope scope = new InputScope();
                InputScopeName name = new InputScopeName();
    
                name.NameValue = InputScopeNameValue.ChineseFullWidth;
                scope.Names.Add(name);
    
                txtInputScope.InputScope = scope;
            }
    
            private void txtInputScope_KeyDown_1(object sender, Windows.UI.Xaml.Input.KeyRoutedEventArgs e)
            {
                // 判断用户是否按下了 SIP 上的回车键
                if (e.Key == VirtualKey.Enter)
                {
                    // 转移焦点,虚拟键盘会自动隐藏
                    txtReadOnly.Focus(FocusState.Programmatic);
                }
            }

    2、密码框

    <!--            
                    Password - 密码值
                    PasswordChar - 密码框所显示显示的密码替代字符。默认值为“●”
                    IsPasswordRevealButtonEnabled - 是否显示“显示密码明文”按钮
                -->
                    <PasswordBox Name="pwd" Width="200" HorizontalAlignment="Left" MaxLength="16" IsPasswordRevealButtonEnabled="True" />

    3、RichEditBox富文本编辑框

    内容摘要:富文本框支持文本颜色,文本加粗,文本斜体,还有文本搜索,高亮显示等。

    <Grid Name="root" Background="Transparent">
                <StackPanel>
                    <StackPanel Orientation="Vertical">
                        <Button Name="btnBold" Content="加粗" Click="btnBold_Click_1" Margin="0 0 10 0" />
                        <Button Name="btnItalic" Content="斜体" Click="btnItalic_Click_1" Margin="0 0 10 0" />
                        <TextBox x:Name="txtSearch" Margin="0,0,164,0"/>
                        <Button Name="btnSearch" Content="搜索" Click="btnSearch_Click_1" />
                    </StackPanel>
                    <RichEditBox x:Name="txtEditor" Width="239" Height="240" HorizontalAlignment="Left" Margin="0 10 0 0" />
                </StackPanel>
     </Grid>
    private void btnBold_Click_1(object sender, RoutedEventArgs e)
            {
                // 获取选中的文本
                ITextSelection selectedText = txtEditor.Document.Selection;
                if (selectedText != null)
                {
                    // 实体化一个 ITextCharacterFormat,指定字符格式为加粗
                    ITextCharacterFormat charFormatting = selectedText.CharacterFormat;
                    charFormatting.Bold = FormatEffect.Toggle;
    
                    // 设置选中文本的字符格式
                    selectedText.CharacterFormat = charFormatting;
                }
            }
    
            private void btnItalic_Click_1(object sender, RoutedEventArgs e)
            {
                // 获取选中的文本
                ITextSelection selectedText = txtEditor.Document.Selection;
                if (selectedText != null)
                {
                    // 实体化一个 ITextCharacterFormat,指定字符格式为斜体
                    ITextCharacterFormat charFormatting = selectedText.CharacterFormat;
                  //  charFormatting.FontStyle = (FontStyle)Enum.Parse(typeof(FontStyle), "Italic", true);
                    charFormatting.Italic = FormatEffect.Toggle;
    
                    // 设置选中文本的字符格式
                    selectedText.CharacterFormat = charFormatting;
                }
    
            }
            // 保存已经被高亮的 ITextRange
            List<ITextRange> _highlightedWords = new List<ITextRange>();
            // 高亮显示用户搜索的字符
    
            private void btnSearch_Click_1(object sender, RoutedEventArgs e)
            {
                // 清除高亮字符的高亮效果
                ITextCharacterFormat charFormat;
                for (int i = 0; i < _highlightedWords.Count; i++)
                {
                    charFormat = _highlightedWords[i].CharacterFormat;
                    charFormat.BackgroundColor = Colors.Transparent;
                    _highlightedWords[i].CharacterFormat = charFormat;
                }
                _highlightedWords.Clear();
    
                // 获取全部文本,并将操作点移动到文本的起点
                ITextRange searchRange = txtEditor.Document.GetRange(0, TextConstants.MaxUnitCount);
                searchRange.Move(0, 0);
    
                bool textFound = true;
                do
                {
                    // 在全部文本中搜索指定的字符串
                    if (searchRange.FindText(txtSearch.Text, TextConstants.MaxUnitCount, FindOptions.None) < 1)
                    {
                        textFound = false;
                    }
                    else
                    {
                        _highlightedWords.Add(searchRange.GetClone());
    
                        // 实体化一个 ITextCharacterFormat,指定字符背景颜色为黄色
                        ITextCharacterFormat charFormatting = searchRange.CharacterFormat;
                        charFormatting.BackgroundColor = Colors.Yellow;
    
                        // 设置指定文本的字符格式(高亮效果)
                        searchRange.CharacterFormat = charFormatting;
                    }
                } while (textFound);
    
    
            }
        }

    4、RichTextBlock 富文本显示控件

    摘要:可以在文本内部嵌入各种控件

    <StackPanel >
                <!--
                    RichTextBlock - 用于显示富文本的控件
                        Blocks - 富文本的内容
                            Paragraph - 每一个 Paragraph 代表一段内容,其继承自 Block
                                Inlines - 每个 Paragraph 下都有一个内联元素集合,其用法与 TextBlock 的 Inlines 基本相同,不同之处在于只有在 RichTextBlock 中才能使用 InlineUIContainer
                                TextIndent - 指定此段文本的首行的缩进量
                
                    注:其他 n 多属性基本同 TextBlock
                -->
                <RichTextBlock FontSize="14.667" HorizontalAlignment="Left">
                    <RichTextBlock.Blocks>
                        <Paragraph TextIndent="20">
                            Windows Phone 8采用和Windows 8相同的针对移动平台精简优化
                            NT内核并且内置诺基亚地图,这标志着移动版Windows Phone将提前
                            与Windows系统同步,部分Windows8应用可以更方便的移植到手机           
                        </Paragraph>
                        <Paragraph>
                            <InlineUIContainer>
                                <StackPanel HorizontalAlignment="Left">
                                    <TextBlock Text="显示一张图片" />
                                    <Image Source="/Assets/Logo.png" Width="100" Height="100" />
                                </StackPanel>
                            </InlineUIContainer>
                        </Paragraph>
                    </RichTextBlock.Blocks>
                </RichTextBlock>
            </StackPanel>

    5、RichTextBlockOverflow 处理富文本框溢出

    <StackPanel  Orientation="Vertical">
    
    <RichTextBlock HorizontalAlignment="Left" Width="390" Height="100" OverflowContentTarget="{Binding ElementName=txtOverflow}">
     <Paragraph>
                        一打开Windows 8计算机,用户就会发现明显的变化。呈现在用户眼前的不再是熟悉的桌面,而是由漂亮、现代化的瓷贴(tile)以及最适合在触控屏上运行的全屏应用构成的环境。这就是“开始”屏,它取代了Windows用户熟悉的“开始”菜单。开始屏不只是菜单,而是占据整个显示屏的一个完整的计算环境,有自己独立的应用和控件。用户仍然可以使用过去的桌面和老式软件,在Windows 8中,桌面就像另外一款应用,用户可以通过点击开始屏上的图标或按钮运行桌面。
    这是一个大胆的举措,基于瓷贴的环境非常好,将受到用户的欢迎。这一环境让人感觉很自然,特别是在触控屏设备上,使Windows进入了平板电脑时代。它可能甚至标志着一个漫长过渡期的开始,新设计将逐步取代原来的设计,当然,这取决于微软吸引新型应用的速度。
    Windows将提供两种完全不同的用户体验。微软的目的是提供一款既能在传统PC,也能在平板电脑上运行的操作系统,包括采用触控方式操作的天气应用和采用鼠标操作的Excel都能在Windows 8中运行。这一策略完全不同于苹果,苹果的iPad平板电脑和Mac计算机运行不同的操作系统。
    双环境策略可能会让传统PC用户感到困惑。新、旧两种环境都可以通过触控、鼠标、键盘进行操作,但触控更适合新环境,鼠标、键盘更适合旧环境。
    Windows 8将带有两种不同版本的IE,许多功能也不相同。例如,新型应用通常缺乏传统应用中的标准菜单、工具条、改变尺寸和关闭按钮。微软坚信用户困惑是暂时的,将被运行Office等传统办公软件的能力所抵消。Office不能在iPad或Android平板电脑上运行。
    Windows 8可能给用户带来更多困惑。Windows 8有两种版本:一个版本面向标准的X86 PC,另一款版本――Windows RT面向配置ARM架构芯片的设备。
    当然,两种版本之间的区别很大。在X86设备上,用户可以运行新型应用,也可以通过桌面环境运行传统的Windows应用。但是,用户不能在ARM设备上安装和运行传统Windows应用。能同时在X86和ARM设备上运行的唯一一款主要软件是一款新版Office,但ARM版Office不包含Outlook。用户可以通过网络商店下载所有新型应用。
    微软将首次推出自主品牌平板电脑Surface,与传统硬件合作伙伴推出的Windows 8和Windows RT平板电脑竞争。
    </Paragraph>
    </RichTextBlock>
    <RichTextBlockOverflow x:Name="txtOverflow" Height="100" OverflowContentTarget="{Binding ElementName=txtOverflow2}"  />
    
                <!--
                    RichTextBlock - 富文本显示框
                        OverflowContentTarget - 当 RichTextBlock 中的内容溢出时,将溢出文字绑定到指定的 RichTextBlockOverflow 中
            
                    RichTextBlockOverflow - 用于显示 RichTextBlock 或其他 RichTextBlockOverflow 中的溢出文字
                        OverflowContentTarget - 当此 RichTextBlockOverflow 中的内容也溢出时,将溢出文字绑定到指定的其他 RichTextBlockOverflow 中
                        HasOverflowContent - 是否有溢出内容可显示
                        ContentSource - 源内容,返回对应的 RichTextBlock
                -->
    <RichTextBlockOverflow Name="txtOverflow2" Width="390" Height="100" HorizontalAlignment="Left" OverflowContentTarget="{Binding ElementName=txtOverflow3}"/>
    
    <RichTextBlockOverflow Name="txtOverflow3" Height="100" Margin="0,0,29,0" />
    </StackPanel>
  • 相关阅读:
    提取左公因子
    如何使用正则表达式构造相对应的ε-NFA
    DFA-NFA 简单介绍 怎么区分
    编译原理 短语 直接短语 定义
    编译原理 符号表为什么设计字符串表这样的结构?
    编译原理 词法分析
    paper 自动翻译论文软件推荐
    github 单个文件超过100M 解决办法 Git LFS 使用
    马哥博客作业第四周
    马哥博客作业第三周
  • 原文地址:https://www.cnblogs.com/fuchongjundream/p/4002360.html
Copyright © 2011-2022 走看看