WPF学习之路(五) 实例:写字板_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > WPF学习之路(五) 实例:写字板

WPF学习之路(五) 实例:写字板

 2015/4/16 19:31:09  alex_cool  程序员俱乐部  我要评论(0)
  • 摘要:写字板实例一MainWindow.xaml<Windowx:Class="Wordpad01.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="WordPad1.0"Height="350"Width="525"><Grid><Grid
  • 标签:学习 实例

 写字板实例一

 

MainWindow.xaml

<Window x:Class="Wordpad01.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="WordPad1.0" Height="350" Width="525">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <Menu Grid.Row="0">
            <MenuItem Header="File" />
            <MenuItem Header="Copy" />
            <MenuItem Header="Paste" />
            <MenuItem Header="Cut" />
            <MenuItem Header="Delete" />
        </Menu>
        <ToolBar Grid.Row="1">
            <Button>
                <Image Source="/Images/Copy.png" />
            </Button>
            <Button>
                <Image Source="/Images/Paste.png" />
            </Button>
            <Button>
                <Image Source="/Images/Cut.png" />
            </Button>
            <Button>
                <Image Source="/Images/Delete.png" />
            </Button>
        </ToolBar>
        <TextBox x:Name="text" Grid.Row="2" Text="WordPad" FontSize="30" HorizontalAlignment="Center" VerticalAlignment="Center" />
    </Grid>
</Window>

 

 主要依靠Clipboard类实现

 为Button添加Click时间

 <MenuItem Header="Copy" Click="CopyClick" />

 <Button Click="CopyClick">

private void CopyClick(object sender, RoutedEventArgs e)
{
    if (text.Text != null && text.Text.Length > 0)
    {
        Clipboard.SetText(text.Text);
    }
}

private void PasteClick(object sender, RoutedEventArgs e)
{
    if (Clipboard.ContainsText())
    {
        text.Text = Clipboard.GetText();
    }
}

private void CutClick(object sender, RoutedEventArgs e)
{
    CopyClick(sender, e);
    DeleteClick(sender, e);
}

private void DeleteClick(object sender, RoutedEventArgs e)
{
    text.Text = null;
}

 

 添加右键菜单

<TextBox x:Name="text" Grid.Row="2" Text="WordPad" FontSize="30" TextWrapping="Wrap" Height="Auto" Width="Auto" Margin="5">
            <TextBox.ContextMenu>
                <ContextMenu>
                    <MenuItem Header="Copy" Click="CopyClick" />
                    <MenuItem Header="Paste" Click="PasteClick" />
                    <MenuItem Header="Cut" Click="CutClick" />
                    <MenuItem Header="Delete" Click="DeleteClick" />
                </ContextMenu>
            </TextBox.ContextMenu>
</TextBox>

 

添加快捷键 KeyGesture

private KeyGesture gestCopy = new KeyGesture(Key.C, ModifierKeys.Control);
private KeyGesture gestPaste = new KeyGesture(Key.V, ModifierKeys.Control);
private KeyGesture gestCut = new KeyGesture(Key.X, ModifierKeys.Control);
private KeyGesture gestDelete= new KeyGesture(Key.Delete);

protected override void OnPreviewKeyDown(KeyEventArgs e)
{
    base.OnPreviewKeyDown(e);
    e.Handled = true;
    if (gestCopy.Matches(null, e))
    {
        CopyClick(this, e);
    }
    else if (gestPaste.Matches(null, e))
    {
        PasteClick(this, e);
    }
    else if (gestCut.Matches(null, e))
    {
        CutClick(this, e);
    }
    else if (gestDelete.Matches(null, e))
    {
        DeleteClick(this, e);
    }
}

 

添加状态控制

菜单栏

<MenuItem Header="File" SubmenuOpened="MenuItem_SubmenuOpened"/>
<MenuItem x:Name="copyItem" Header="Copy" Click="CopyClick" />
<MenuItem x:Name="pasteItem" Header="Paste" Click="PasteClick" />
<MenuItem x:Name="cutItem" Header="Cut" Click="CutClick" />
<MenuItem x:Name="deleteItem" Header="Delete" Click="DeleteClick" />
private void MenuItem_SubmenuOpened(object sender, RoutedEventArgs e)
{
  cutItem.IsEnabled = copyItem.IsEnabled = deleteItem.IsEnabled 
     = text.Text != null && text.Text.Length > 0;
  pasteItem.IsEnabled = Clipboard.ContainsText();
}

TextBox同理

<TextBox x:Name="text" ContextMenuOpening="text_ContextMenuOpening">

快捷键与工具栏同上

 

一个简易的写字板程序完成了,但是有没有发现很麻烦呢,下一期更新WordPad2.0版

 

 

 

 

 

 

 

 

 

 

 

 

To be continue...

发表评论
用户名: 匿名