精华内容
下载资源
问答
  • wpf小程序
    2021-05-28 23:24:02
    要求

    (1)设计界面,向窗体添加下拉式菜单、文本框、打开文件对话框、保存文件对话框。
    (2)依次为“文件”下的“新建”、“打开”、“保存”菜单项的Click事件添加事件处理函数。
    (3)实现文本文件的打开、编辑和保存功能;
    提示:
    (1) 窗口可用DockPanel进行布局,让菜单和工具栏都位于顶部,即:
    DockPanel.Dock=“Top”。
    (2) 文本文件的显示与编辑可以使用TextBox控件。
    (3) 使用命令绑定,让菜单项和工具栏同时与一个操作相关联。
    在MainWindow.xaml的Window标签下加:
    <Window.CommandBindings>



    </Window.CommandBindings>
    在菜单项添加:

    在工具栏添加:

    就可绑定命令。同时Ctrl+O等键盘组合也默认与Open命令相绑定。
    (4) 添加bool类型_saved字段,标记当前内容是否已保存。

    <Window x:Class="WpfApp2.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:local="clr-namespace:WpfApp2"
            mc:Ignorable="d"
            Title="MainWindow" Height="450" Width="800">
        <Window.CommandBindings>
            <CommandBinding Command="Open" Executed="OnOpen"/>
            <CommandBinding Command="Save" Executed="OnSave"/>
            <CommandBinding Command="New" Executed="OnNew"/>
        </Window.CommandBindings>
        <Grid>
            <Menu >
                <MenuItem Header="文件" Height="46" Width="34" TextOptions.TextHintingMode="Animated" >
                    <MenuItem Header="打开" Command="Open"/>
                    <MenuItem Header="另存为" Command="Save"/>
                    <MenuItem Header="新建" Command="New"/>
                </MenuItem>
            </Menu>
            <Button Content="保存"  Click="OnSave1" x:Name="button1" Visibility="Collapsed"  Margin="77,0,643.6,363" />
            <Button Content="不保存"  Click="NoSave" x:Name="button2" Visibility="Collapsed" Margin="191,0,527.6,363"/>
            <TextBox x:Name="text1" TextChanged="Txt_TextChanged" AcceptsReturn="True"     AcceptsTab="True" Margin="0,45,-0.4,0"/>
    
        </Grid>
    </Window>
    

    文件说明:Menu下提供三个选项操作,“打开”,“另存为”,“新建”。分别绑定了三个CommandBinding,来操作源程序的三个方法,OnOpen,OnSave,OnNew。还定义了两个按钮,“保存”,“不保存”,用click属性绑定了方法“OnSave1”,“NoSave”。最后还有一个TextBox控件用来展示和编辑文件的内容,其中属性TextChanged绑定源程序的Txt_TextChanged方法,对文本内容改变做出响应。

    源代码:
    using Microsoft.Win32;
    using System;
    using System.IO;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Input;
    namespace WpfApp2
    {
        public partial class MainWindow : Window
        {
            public int ChangeStatus = 0;//0表示打开的文件还没有改变,1表示打开的文件已经改变
            public MainWindow()
            {
                InitializeComponent();
            }
            private void OnOpen(object sender, ExecutedRoutedEventArgs e)
            {
                if (ChangeStatus==0)
                {
                    var dlg = new OpenFileDialog()
                    {
                        Title = "打开文件",
                        CheckPathExists = true,
                        CheckFileExists = true,
                        Filter = "Text files (*.txt)|*.txt|All files|*.*",
                        InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyComputer)
                    };
                    if (dlg.ShowDialog() == true)
                    {
                        text1.Text = File.ReadAllText(dlg.FileName);//赋值操作会触发Txt_TextChanged
                        button1.Visibility = Visibility.Collapsed;//因为触发了Txt_TextChanged会显示按钮
                        button2.Visibility = Visibility.Collapsed;//但是因为打开文件是不会修改文件内容的,所以隐藏掉
                        Title = dlg.FileName;
                        
                        ChangeStatus = 0;
                    }
                }
                else if( ChangeStatus == 1)
                {
                    MessageBox.Show("请先保存文件!!!");//文件打开了,并且修改了,再要打开其他文件会弹窗提示“先保存文件”
                }
            }
    
            private void OnSave(object sender, ExecutedRoutedEventArgs e)//另存为
            {
                var dlg = new SaveFileDialog()
                {
                    Title = "另存为",
                    DefaultExt = "txt",
                    Filter = "Text files (*.txt)|*.txt|All files|*.*",
                };
                if (dlg.ShowDialog() == true)
                {
                    Title = dlg.FileName;
                    File.WriteAllText(dlg.FileName, text1.Text);
                    ChangeStatus = 0;
                }
            }
            private void OnNew(object sender, ExecutedRoutedEventArgs e)//新建文件
            {
                var dlg = new SaveFileDialog()
                {
                    Title = "新建",
                    DefaultExt = "txt",
                    Filter = "Text files (*.txt)|*.txt|All files|*.*",
                };
                if (dlg.ShowDialog() == true)
                {
                    button1.Visibility = Visibility.Visible;
                    button2.Visibility = Visibility.Visible;
                    File.WriteAllText(dlg.FileName, "");
                    Title = dlg.FileName;//把路径写到title
                    text1.Clear();
                    ChangeStatus = 0;
                }
            }
            private void Txt_TextChanged(object sender, TextChangedEventArgs e)//修改了文件内容会把“保存”“不保存”按钮显示出来
            {
    
                if(ChangeStatus==0)
                {
                    button1.Visibility = Visibility.Visible;
                    button2.Visibility = Visibility.Visible;
                    ChangeStatus = 1;
                }
            }
            private void OnSave1(object sender, RoutedEventArgs e)//保存文件,可以打开其他文件了
            {
                if(Title!=""&& Title != "MainWindow")
                {
                    File.WriteAllText(Title, text1.Text);
                    ChangeStatus = 0;//保存了文件之后,就相当于打开文件但是没有修改
                }
                 button1.Visibility = Visibility.Collapsed;
                 button2.Visibility = Visibility.Collapsed;//隐藏两按钮
            }
            private void NoSave(object sender, RoutedEventArgs e)//不保存文件
            {
                
                text1.Text = File.ReadAllText(Title);//重新把textbox内容改成原文件的内容
                ChangeStatus = 0;//改变当前文件的状态
                button1.Visibility = Visibility.Collapsed;
                button2.Visibility = Visibility.Collapsed;//隐藏两按钮
            }
        }
    }
    
    

    解释基本都在注释上了,最后再记录一个小bug:
    Txt_TextChanged的触发机制,一开始我以为只有在运行后的那个框框里输入或者删除文字,才会有执行响应函数,但是其实通过
    text1.Text = File.ReadAllText(Title)这样赋值的方式也是可以的,所以一开始忽略了一些细节上的问题,最后通过改正代码的执行顺序,还好解决了问题。

    更多相关内容
  • WPF布局小程序

    2017-10-12 08:49:22
    QQ界面使用WPF编写,新手,仅供参考。
  • WPF MVVM 小程序样例

    2017-07-27 14:36:41
    wpf ICommand MVVM的运用,自定义ICommand进行UI绑定。
  • ![图片说明]... 这种球里面的液体晃动的同时随着数值的增加,液体也升高。 液体晃动我能做,但是这个颜色的填充以及液体的升高是我的难题,有精力的兄弟帮我搞一搞谢谢啦,请用wpf 请用wpf 请用wpf
  • 自己写的基于微信小程序的手机端拍照并通过websocket协议上传至PC同时根据上传的图片做一个简单的工件缺陷的标注处理,写的非常简单,没有什么算法之类的,只是对自己学习图片传输及处理的一个记录,同时也是对自己...
  • WPF做的抽奖程序 ,可实现抽奖大部分功能,比如多抽,分组抽,重抽,跳抽等
  • wpf聊天小程序

    2015-08-01 12:04:17
    程序实现登录验证、文本传输、文件传输、震动、视频、电子白板等功能.适合参考使用
  • 测试WPF应用程序

    2017-07-13 11:20:26
    测试WPF
  • Weather 用WPF写的日历天气桌面小程序 .NET 5.0 Visual Studio 2019 MVVM(ReactiveUI) 软件截图 主界面 提示 菜单
  • 演示如何将WPF应用程序限制为特定的窗口大小,同时又将其最大化。
  • 用于 WPF 应用程序的全功能、丰富的查找和替换控件 轻松地将查找和替换添加到您的 WPF 应用程序。 RapidFindReplace WPF允许开发人员快速向 WPF 应用程序添加强大的查找和替换对话框工具。 通过在文本框、文档和数...
  • 又到学期末了,结合所学开发了一个C#聊天小程序,包含数据库(如果不需要可删),文字聊天,文件传输等基本聊天功能,页面简单整洁,即下即用,可供大家作代码参考。
  • WPF开发的小程序 初学者适用 很好的学习代码,设计独特 有强大功能
  • 源码描述: 一、源码特点 wpf开发的一个时钟小程序,代码比较简单,界面干净
  • C# WPF 中嵌入其它应用程序窗口,调用Win32API 将其它应用程序窗口嵌入当前程序内部
  • WPF聊天程序

    2017-11-08 15:24:08
    WPF和C#开发的聊天小程序,可用来两台电脑之间的聊天并记录。
  • 主要为大家详细介绍了VS中模仿WPF模板创建最简单的WPF程序的相关资料,感兴趣的伙伴们可以参考一下
  • wpf实例小程序

    2011-12-28 10:57:07
    一些wpf入门的小程序,可供初学者参考,里面的实例都已经运行过,
  • 这个项目是房间预订Windows桌面程序的过分简化。它将研究使用Microsoft Entity Framework的“数据库优先”方法。 要求 要运行此程序,您需要在计算机上安装MySQL数据库引擎。然后,您需要使用“解决方案项目”...
  • wpf 例子 最简单的倒计时程序
  • WPF转盘程序

    2015-12-22 16:31:59
    WPF写的一个圆形转盘程序,点击开始可以旋转,效果很好
  • Wpf控件应用小程序

    2013-01-31 10:04:09
    控件的应用 ,40,0,0" Name="grid1" VerticalAlignment="Top" Width="200" > 可折叠面板1" Name="expander1" IsExpanded="True" Margin="0,0,0,100"> 中国 美国 日本 法国 ,100,0,0"> ;component/...
  • wpf,c#自做的小程序

    2019-08-28 12:37:16
    使用Timer组件实现冬奥会倒计时` 部分Xaml代码: 部分Cs代码: 运行动态结果展示: 源码获取:https://download.csdn.net/download/weixin_40257483/11630415

    使用Timer组件实现冬奥会倒计时`

    在这里插入图片描述
    部分Xaml代码:
    在这里插入图片描述
    部分Cs代码:
    在这里插入图片描述
    运行动态结果展示:
    在这里插入图片描述

    源码获取:https://download.csdn.net/download/weixin_40257483/11630415

    展开全文
  • WPF抽奖小程序-随机数

    2015-05-10 13:19:45
    适用于贴吧/微博的页数/楼层抽奖 片段: private void button3_Click(object sender, RoutedEventArgs e) { Random _Random = new Random(); _Random = new Random(); for (int i = 0; i (textBox4.Text);...
  • 本课程适合初学 .NET WPF技术方向的学员,或者有一定经验但不太擅长xaml界面布局,对交互动画,相深入学习Blend for Visual Studio 的同学,可以观看本系列课程。WPF相比于原有的winform开发,多了xaml语言的界面...
  • 方便上班族查看股票行情的wpf界面小程序,也可以供C#初学者参考
  • 使用ESRI.ArcGIS.Client.dll实现加载在线影像和本地shp的程序,区别于传统AE开发加载刷新缓慢。实际是将shp添加到mxd然后再转为mpk加载的方式,代码对于有这方面需要的项目有一定参考价值。
  • 程序老媛出品,必属精品,亲测校正,质量保证】 资源名:wpf 五子棋游戏程序源码 ...源码说明: 一款基于wpf开发的五子棋游戏游戏源码,带悔棋功能,非常适合学习借鉴 适合人群:新手及有一定经验的开发人员
  • C#利用 Face++sdk 实现wpf小程序 6/13/22

    千次阅读 2016-06-13 21:00:39
    最近因为《多媒体课程》要交实验,我就顺便把这个小程序给发过去了。有稍微的完善了一下。 做了一下的更改: 1.添加了性别判断 2.添加了国籍判断 3.把检测的准确百分比加到输出中 4.微调了各个控件的位置 ...

    最近因为《多媒体课程》要交实验,我就顺便把这个小程序给发过去了。有稍微的完善了一下。

    做了一下的更改:

    1.添加了性别判断

    2.添加了国籍判断

    3.把检测的准确百分比加到输出中

    4.微调了各个控件的位置

     

       

     

    下一步计划是进行模型训练和多人识别功能的添加。

     

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,392
精华内容 9,756
关键字:

wpf小程序