[C# 项目实战]: 制作一个备忘录(经典)
01
—
概述
? ? ?前幾天群里有人問如何制作備忘錄,感覺這樣一個小實例挺適合新手們入門學習使用,所以就抽空做了出來。界面如下圖:
這個備忘錄主要包括了如下功能:
①?備忘錄信息的增、刪、改、查;
② 備忘錄時間到了以后進行語音播報。
功能很簡單,但是要實現這么一個功能,也涉及眾多的知識點,接下來詳細進行分解。
02
—
內容詳述
①界面button的圖標:
圖標圖片可以上網上下載,下載好以后放到項目目錄中,然后在項目中找到你的圖片——>右鍵包括在項目中——>再右鍵,點擊屬性:
復制到輸出目錄,更改為始終復制。
生成操作,更改為內容。
前臺XMAL操作:
②?數據源:這里我采用從xml讀取并綁定到界面,界面如果有修改,在頁面退出時進行數據保存,當然你也可以使用數據庫去操作
XML文件位置:根目錄的RawData下
XML文件數據內容如下:
MemorandumModel數據模型定義:
public class MemorandumModel {public string Title { get; set; }public EvenType EvenType { get; set; }public DateTime DateTime { get; set; }public bool IsComplete { get; set; }}③XML文件的讀取和保存:MemorandumRealList是我們所有數據的集合,為了方便界面查詢,界面綁定了MemorandumShowList 這個集合
xml讀取:
xml文件保存:
④查詢:如果全選選中,則顯示全部內容,未勾選,則采用link去匹配選中信息去篩選,我這里是所有信息去匹配的,你也可以自己修改下,去只匹配某一項或幾項內容
⑤標題欄未輸入內容時顯示灰色提示字體,有輸入時輸入內容顯示黑色字體:
這里采用事件處理:獲取到光標時
光標離開時:
⑥選中行刪除:
public void DeleteClick(){MemorandumRealList.Remove(SelectedItem);MemorandumShowList.Remove(SelectedItem);}⑦行號獲取:在行選擇改變事件中去做
⑧添加信息:
⑨修改信息:
⑩定時器查詢:采用using System.Threading.Tasks;下的單線程定時器DispatcherTimer,
定義和初始化:
定時器事件:我這里每隔一分鐘查詢一次,查詢到當前事件到了提醒時間就進行一次語音播報:
⑩①:語音播報:這里開了task線程執行
⑩② 界面時間處理:
- 界面的表格采用的dev控件gridcontrol,默認情況下,時間只顯示年月日,如果需要顯示時分,需要設定:EditSettings如下 
如果使用的是wpf 自帶的表格控件datagrid,相對好處理
- 界面頂端的時間控件采用:toolkit下的xctk1:DateTimeUpDown這個控件 - 她綁定的是一個字符串類型的數據,所以添加時候,需要將他轉換為datetime類型,?DateTime.Parse(DataTimeContext),或者 - ?DateTime = Convert.ToDateTime(DataTimeContext) <xctk1:DateTimeUpDown?x:Name="_minimum"??Format="Custom"?FormatString="yyyy/MM/dd?HH:mm"?Text="{Binding DataTimeContext}" HorizontalAlignment="Left" VerticalAlignment="Center"Value="2016/01/01T12:00" Margin="15,5"/>
⑩③combobox枚舉內容綁定:
⑩④關于gridcontrol?TableView?的常用屬性介紹
03
—
前臺代碼
直接上代碼,比較簡單,不展開講解了:
<UserControlxmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:Caliburn.Micro.Hello"xmlns:cal="http://www.caliburnproject.org" xmlns:sys="clr-namespace:System;assembly=mscorlib"xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid" xmlns:xctk="http://schemas.devexpress.com/winfx/2008/xaml/editors" xmlns:xctk1="http://schemas.xceed.com/wpf/xaml/toolkit" x:Class="Caliburn.Micro.Hello.MemorandumView" mc:Ignorable="d" d:DesignHeight="450" d:DesignWidth="800" ><UserControl.Resources><local:FontColorConverter x:Key="FontColorConverter" /><Style TargetType="{x:Type TextBox}"><Setter Property="HorizontalContentAlignment" Value="Left"/><Setter Property="VerticalContentAlignment" Value="Center"/><Setter Property="Width" Value="100"/> </Style><Style TargetType="{x:Type CheckBox}"><Setter Property="HorizontalAlignment" Value="Center"/><Setter Property="VerticalAlignment" Value="Center"/><Setter Property="Foreground" Value="Black"/> </Style><Style TargetType="Button"><Setter Property="Foreground" Value="Black"/> </Style><DataTemplate x:Key="rowIndicatorContentTemplate"><StackPanel VerticalAlignment="Stretch"HorizontalAlignment="Stretch"><TextBlock Text="{Binding RowHandle.Value}"TextAlignment="Center" Foreground="Black"/></StackPanel></DataTemplate></UserControl.Resources><StackPanel Orientation="Vertical"><StackPanel Orientation="Horizontal"><TextBox Text="{Binding TitleText}" Margin="15,5" cal:Message.Attach="[Event GotFocus] = [Action GotFocus];[Event LostFocus] = [Action LostFocus]" Foreground="{Binding TitleColor, Converter={StaticResource FontColorConverter}}"/><ComboBox ItemsSource="{Binding EvenTypeList}" Margin="15,5" SelectedIndex="{Binding SelectedIndex}" MinWidth="100" Foreground="Black"/><!--<DatePicker Text="{Binding DataTimeContext,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"SelectedDate="{x:Static sys:DateTime.Now}" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="15,5" />--><xctk1:DateTimeUpDown x:Name="_minimum" Format="Custom" FormatString="yyyy/MM/dd HH:mm" Text="{Binding DataTimeContext}" HorizontalAlignment="Left" VerticalAlignment="Center"Value="2016/01/01T12:00" Margin="15,5"/><CheckBox IsChecked="{Binding IsCompleteStatus}" Margin="15,5" Content="是否完成" Foreground="Black"/><Button Margin="15,5" MinWidth="60" cal:Message.Attach="[Event Click] = [Action SearchClick]" ><WrapPanel ><Image Source="/Images/search.png" Width="15" Height="15" /><TextBlock Text="查找" VerticalAlignment="Center" /></WrapPanel></Button></StackPanel><Border BorderBrush="LightBlue" CornerRadius="2" BorderThickness="2" ><dxg:GridControl AutoGenerateColumns="AddNew" EnableSmartColumnsGeneration="True" AllowLiveDataShaping="True" cal:Message.Attach="[Event SelectedItemChanged] = [Action GridControl_SelectedItemChanged($source,$event)];" ItemsSource="{Binding MemorandumShowList}" SelectedItem="{Binding SelectedItem}" Height="330" Foreground="Black"><dxg:GridControl.View><dxg:TableView ShowTotalSummary="True" AllowMoveColumnToDropArea="False" AllowGrouping="False" AutoExpandOnDrag="False" ShowDragDropHint="False" ShowGroupPanel="False" AllowColumnMoving="False" AllowResizing="False" Foreground="Black"RowIndicatorContentTemplate="{StaticResource rowIndicatorContentTemplate}" /></dxg:GridControl.View><dxg:GridColumn Header="標題" FieldName="Title" MinWidth="100"/><dxg:GridColumn Header="類型" FieldName="EvenType" MinWidth="100"/><dxg:GridColumn Header="提醒時間" FieldName="DateTime" MinWidth="120" ><dxg:GridColumn.EditSettings><!--<xctk:DateEditSettings DisplayFormat="dd-MM-yyyy HH:mm:ss.fff"/>--><xctk:DateEditSettings DisplayFormat="yyyy-MM-dd HH:mm"/></dxg:GridColumn.EditSettings></dxg:GridColumn><dxg:GridColumn Header="狀態" FieldName="IsComplete" MinWidth="100"/></dxg:GridControl></Border><StackPanel Orientation="Horizontal"><CheckBox IsChecked="{Binding SelectAll}" Margin="35,5" Content="全選"/><Button Margin="35,5" MinWidth="60" cal:Message.Attach="[Event Click] = [Action DeleteClick]" ><WrapPanel ><Image Source="/Images/delete.png" Width="15" Height="15" /><TextBlock Text="刪除" VerticalAlignment="Center" /></WrapPanel></Button><Button Margin="35,5" MinWidth="60" Name="Add"><WrapPanel ><Image Source="/Images/add.png" Width="15" Height="15" /><TextBlock Text="添加" VerticalAlignment="Center" /></WrapPanel></Button><Button Margin="35,5" MinWidth="60" Name="Modify"><WrapPanel ><Image Source="/Images/modify.png" Width="15" Height="15"/><TextBlock Text="修改" VerticalAlignment="Center" /></WrapPanel></Button></StackPanel></StackPanel> </UserControl>04
—
效果演示
05
—
源碼
源碼下載?
鏈接:https://pan.baidu.com/s/1yExT_zXFfd6TiAJYoD8kIw?
提取碼:在下面這個公眾號對話框發送【備忘錄】
或者直接添加小編微信:mm1552923? ?獲取。
技術群:添加小編微信并備注進群
小編微信:mm1552923 ??
公眾號:dotNet編程大全? ? ??
總結
以上是生活随笔為你收集整理的[C# 项目实战]: 制作一个备忘录(经典)的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: C#使用NPOI导出Excel文件
- 下一篇: C# 异步方法的异常处理
