- 博客(125)
- 资源 (16)
- 收藏
- 关注
原创 设计模式
简介: 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。 本文的设计模式,使用C#语言,案例可能不是最佳,仅供参考。其中部分内容参考了网上的一些文章。仅供学习。如有错误,欢迎指...
2020-03-23 16:58:27 248
原创 Winform/C#入门编程之目录
第一部分:入门 一:前言 二:编程环境 三:VS2012 第二部分:常用控件一:按钮控件Button二:编辑框控件TextBox三:组合框控件ComboBox四:复选框控件CheckBox五:单选框控件RadioButton六:标签控件Label七:数字显示框控件NumericU...
2018-12-26 18:46:34 1617
原创 PropertyGrid显示嵌套对象
在C#中,使用来显示多重变量,通常意味着你想要展示一个对象的属性,该对象包含子对象或者集合。以下是一个简单的例子,展示如何使用来显示包含嵌套属性的对象。
2024-05-19 14:06:06 467 1
原创 Winform窗体最小化后如何再次弹出
Winform窗体最小化后如何再次弹出,设置WindowState = FormWindowState.Normal即可。
2022-01-17 16:22:40 2706
原创 C# Xml序列化忽略成员
介绍: 使用Xml读写文件时,某个成员无需读写。即可使用[XmlIgnore]属性指示Serialize(TextWriter, Object)的XmlSerializer方法不序列化公共字段或公共读/写属性值。使用:public class Group{ // The XmlSerializer ignores this field. [XmlIgnore] public string Comment; // The XmlSerializ...
2022-01-17 15:24:10 1624
原创 多线程控件安全使用
简介: .NET Framework禁止对控件的跨线程非安全调用,否则会触发错误。WinForm多线程使用控件时可以巧用Action或MethodInvoker委托调用。亦可在窗体代码中设置Control.CheckForIllegalCrossThreadCalls=false;程序就会忽略线程安全检查,简单来说控件可以多线程安全使用。使用:1.Action //无参 private void Test() { ...
2021-07-19 10:11:50 256
原创 WPF ValidationRule
简介: ValidationRule提供检查输入的有效性。可用于数据校验,错误提示。例如检查TextBox控件输入的数值。介绍:ValidationResult 如果值无效,则返回的ErrorContent属性和IsValid属性将ValidationResult分别设置为相应的错误消息false。 ValidatesOnTargetUpdated 获取或设置一个值,该值指示当Binding的目标更新时是否运行验证规则。 N...
2020-09-21 11:33:17 632
原创 WPF x:Code
简介: 可以把后台代码放到前台XAML里,但不建议这么做。使用: <TextBlock MouseEnter="TextBlock_MouseEnter"> <x:Code> <![CDATA[ private void TextBlock_MouseEnter(object sender, MouseEvent...
2020-09-09 17:34:22 517
原创 WPF ObservableCollection<T>
简介: ObservableCollection<T>表示一个动态数据集合,它可在添加、删除项目或刷新整个列表时提供通知。介绍:该类是实现接口的数据集合的内置实现INotifyCollectionChanged。[System.Serializable]public class ObservableCollection<T> : System.Collections.ObjectModel.Collection<T>,...
2020-09-09 17:32:41 2947 4
原创 WPF ListBox
简介:包含可选项列表。介绍:属性 DisplayMemberPath 获取或设置源对象上的值的路径,以用作列表的显示。 SelectedValuePath 获取或设置用于从SelectedValue取SelectedItem的路径。 事件 SelectionChanged 当Selector的选择更改时发生。即列表的选择更改。 使用: public class PersonNP : INotifyPropert...
2020-09-09 17:32:07 485
原创 WPF x:Array
简介: X:Array 标记扩展,通过标记扩展为 XAML 中的对象数组提供常规支持。介绍:语法<x:Array Type="typeName"> arrayContents</x:Array>typeName 将x:Array包含的类型的名称。typeName对于包含 XAML 类型定义的 XAML 命名空间,可能(而且通常是)预固定。 arrayContents 分配给内部ArrayExtension.Items...
2020-09-07 17:27:29 1261
原创 WPF TypeConverter
简介: TypeConverter提供一种将值的类型转换为其他类型以及访问标准值和子属性的统一方法。另一种转换参考如下链接:IValueConverter 。介绍: IValueConverter 用于数据绑定的转换 TypeConverter 用于类属性的转换 使用:Human类转换为string类型 [TypeConverter(typeof(HumanTypeConvert))] public...
2020-09-07 11:02:29 745
原创 WPF ListBox选中项样式更改
public class PersonNP : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; private string name; public string Name { get { return name; } set { name = value; No..
2020-08-27 17:39:19 3158
原创 WPF Template
简介: 控件本身就是模板的组合。如果需要灵活发挥控件的功能,加入模板。例如ListBox控件的内容和格式。介绍: System.Windows.DataTemplate 数据模板 System.Windows.Controls.ControlTemplate 控件模板 System.Windows.Controls.ItemsPanelTemplate 布局模板 public class PersonNP : INo...
2020-08-27 10:12:10 413
原创 WPF DependencyObject
简介: DependencyObject类表示参与依赖属性系统的对象。属性系统的主要功能是计算属性的值,并提供有关已更改的值的系统通知。参与属性系统的另一个类DependencyProperty。DependencyProperty允许将依赖属性注册到属性系统,并提供有关每个依赖属性的标识和信息,而DependencyObject为基类,使对象能够使用此依赖属性。 INotifyPropertyChanged类用于通知UI刷新,注重的仅仅是数据更新后...
2020-08-25 14:04:00 4017
原创 WPF DataContext
简介: 获取或设置元素参与数据绑定时的数据上下文。数据上下文是一种概念,允许元素从父元素继承有关用于绑定的数据源以及绑定的其他特征(如路径)的信息。此依赖属性继承属性值。如果有子元素没有通过本地值或样式建立的DataContext的其他值,则属性系统会将该值设置为已分配此值的最近父元素的DataContext值。 在 XAML 中,DataContext通常设置为Binding声明。可以使用属性元素语法或特性语法。还可以使用代码设置DataConte...
2020-08-25 10:57:53 8580 5
原创 WPF 命令库
简介:WPF提供一组预定义命令。命令库包括以下类:ApplicationCommands、NavigationCommands、MediaCommands、EditingCommands和ComponentCommands。这些类提供诸如Cut、BrowseBack、BrowseForward、Play、Stop和Pause的命令。许多这些命令都包含一组默认输入绑定。例如,如果指定应用程序处理 "复制" 命令,则会自动获取键盘绑定 "CTRL + C"。还会获取其他输入设备的绑定...
2020-08-24 10:56:38 939
原创 WPF CommandTarget
简介: CommandTarget可以修改Command传入的sender。使用:把传入的Button对象改为TextBox public void command_Execute(object sender, ExecutedRoutedEventArgs e) { MessageBox.Show(e.Source.ToString()); e.Handled = true; ...
2020-08-21 15:49:50 1753 1
原创 WPF IValueConverter
简介: 实现IValueConverter接口,可以根据实际需要转换数据的类型。使用:把bool转换成Visibility类型。 public class ValueConvert : IValueConverter { // // 摘要: // 转换值。 // // 参数: // value: // 绑定源生成的值。 ...
2020-08-21 14:58:50 640
原创 WPF 自定义命令
简介: 自定义命令,有如下三种方式。介绍:ICommand 自定义类实现其接口。基础的用法。 RoutedUICommand 实例化RoutedUICommand。可关联快捷键。 Mvvm Light 引用Mvvm Light。封装命令,使用方便。 使用:1.ICommand1.实现ICommand借口。2.新建对应的ViewModel类,作为DataContent。亦可省略对应的ViewModel类。1.1 常规用法...
2020-08-20 14:55:39 864
原创 WPF INotifyPropertyChanged
简介: 获取或设置控件元素的数值,需要INotifyPropertyChanged接口。自定义一个实现了INotifyPropertyChanged接口的类。这个接口是为了发出属性更改的通知,即实现了这个接口将会实现当源对象的公共属性发生改变时,该属性的值会立即响应到界面上显式,或者获取界面的数据。介绍:Source 指向源对象的引用,即提供数据的对象。一般都是指定的。 RelativeSource 使用RelativeSource对象指定绑定源的相对位置,默认...
2020-08-19 15:34:10 1481
原创 WPF Slider与TextBox绑定
简介: Slider与TextBox的数值绑定,可以在Slider绑定,亦可在TextBox绑定。使用1.TextBox绑定,注意UpdateSourceTrigger=PropertyChanged,Mode=TwoWay。 <Slider x:Name="slider" Maximum="100" IsSnapToTickEnabled="True" ></Slider> <...
2020-08-18 14:55:45 1990
原创 WPF 路由事件
简介: 路由事件有三种方式。Direct Event 直接路由事件。自身元素,不传递。 Bubbling Event 冒泡路由事件。从子元素到父元素传递。 Tunneling Event 隧道路由事件。从父元素到子元素传递。 注意1.设置Handled = true的时候,不管是冒泡还是隧道事件,它还是会继续传播的,只是对应的事件不会再处理了。可以通过AddHandler方法进行注册,再次触发事件。2.因为隧道路由事件...
2020-08-18 10:38:03 236
原创 CS0234 命名空间“Microsoft”中不存在类型或命名空间名“Practices”(是否缺少程序集引用?)
简介: 使用MVVM,添加MVVM Light时,编译后报错。然后添加CommonServiceLocator,回滚一下版本至1.3.0。
2020-08-14 16:23:44 1419
原创 解释器模式
简介: 解释器模式的意图是给定一个语言,定义它的文法的一种表示,并定义一种解释器,这个解释器使用该表示来解释语言中的句子。例如R = R1 + R2,常规的理解是整数相加,但可以给定特殊的含义,这就可用到解释器模式,类似重写“+=”、“-+”等。介绍:解释器模式结构特征 优点 1.提供了新的解释表达式的方式。 2.易于实现简单文法...
2020-03-23 13:48:48 308
原创 备忘录模式
简介: 备忘录模式的意图是在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态(如果没有这个关键点,其实深拷贝就可以解决问题)。这样以后就可以将该对象恢复到原先保存的状态。 可使用数据回滚,恢复先前状态。介绍:备忘录模式结构特征 优点 1.将数据恢复成原来正确的数据,配合文件、数据库等存储方式。 ...
2020-03-20 10:39:22 277
原创 访问者模式
简介: 访问者模式的意图是表示一个作用于某对象结构中的各个元素的操作。它可以在不改变各元素的类的前提下定义作用于这些元素的新的操作。介绍:访问者模式结构特征 优点 1.增加新的操作就意味着添加一个新的访问者类。 2.行为操作集中到结构对象,,类似中介模式。 缺点 1.每增加一个节点,抽象访问者也许变动。 特点...
2020-03-19 15:45:27 192
原创 责任链模式
简介: 职责链模式的意图是 避免请求发送者与接收者耦合在一起,让多个对象都有可能接受请求,将这些对象连接成一条链,并且沿着这条链传递请求,知道有对象处理它为止。 介绍:职责链模式结构特征 优点 1.降低对象间的耦合度。客户端负责具体链的创建。 2.仅需要一个指向下一个对应的引用,简化对象连接。 缺点 1...
2020-03-19 14:55:05 214
原创 策略模式
简介: 策略模式的意图是定义一系列算法,把它们一个个封装起来,并且使它们可互相替换。该模式使得算法可独立于使用它的客户而变化。介绍:策略模式结构特征 优点 1.易于扩展,新增具体策略类即可。 2.避免使用条件选择语句。 3.由于环境角色内有公共策略接口,方便切换。 缺点 1.策略类全部需要暴露给客...
2020-03-19 14:07:12 298
原创 状态模式
简介: 状态模式的意图是允许一个对象在其内部状态改变时改变它的行为。从而使对象看起来似乎修改了其行为。介绍:状态模式结构特征 优点 1.将状态对象统一,对象状态的改变即改变对象的行为。 2.共用对象,减少个数,防止对象串用。 缺点 1.系统复杂,不是完全的“开闭原则”。 特点 1.对象的行为依赖对象的状...
2020-03-19 11:19:51 183
原创 中介模式
简介: 中介模式的意图是定义了一个中介对象来封装一系列对象之间的交互关系。中介者使各个对象之间不需要显式地相互引用,从而使耦合性降低,而且可以独立地改变它们之间的交互行为。介绍:中介模式结构特征 优点 1.多个对象之间松耦合。 2.中介者对多个对象集中管理,对象之间无关联。多对多变成一对多。 缺点 1.如果对象过...
2020-03-18 16:31:44 526 2
原创 观察者模式
简介: 定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。event中,委托充当了抽象的Observer接口,而提供事件的对象充当了目标对象。委托是比抽象Observer接口更为松耦合的设计。介绍:观察者模式结构特征 优点 1.被观察者和观察者之间建立了一个抽象的耦合,被观察者保...
2020-03-18 14:46:19 176
原创 迭代器模式
简介: 提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。例如抽象聚合角色(Aggregate)和抽象迭代器角色(Iterator)分别是IEnumerable接口和IEnumerator接口,具体聚合角色(ConcreteAggregate)有Queue类型,BitArray等类型。介绍:迭代器模式结构特征 优点 ...
2020-03-18 10:31:01 219
原创 命令模式
简介: 命令模式将一个请求封装为一个对象,不同的请求对应相应的接受者执行对应的方法。例如系统命令的撤销和回滚、数据更新时的取消回滚、回调等场景可考虑使用命令模式。介绍:命令模式结构特征 优点 1.新命令更容易加入系统。 缺点 1.命令过多时会产生过多的具体命令。 特点 1.请求者和接受者解耦。 角色...
2020-03-17 16:33:11 303
原创 模板模式
简介: 模板方法模式定义一个操作中的算法的顺序,而将一些步骤扩展到子类中。Application应用程序会有自己的声明周期,例如值的存储在作用域结束后得释放是有固定顺序的。还有GC的垃圾回收机制。介绍:模板方法模式结构特征 优点 1.代码复用。 2.子类扩展,模板稳定。 特点 1.模板步骤稳定。 角...
2020-03-17 15:12:09 144
原创 代理模式
简介: 为其他对象提供一种代理以控制对这个对象的访问。客户端不直接访问对象,而是访问代理对象。可用在不同级别的使用权限。介绍:代理模式结构特征 优点 1.被调用的对象隔离,降低了系统的耦合度; 2.代理对象在代理操作,可增加代理功能,增加对象的灵活度。 缺点 1.由于新增代理对象,复杂度增加,访问时间增加。 特点 1...
2020-03-17 13:55:55 184
原创 享元模式
简介: 享元模式使用或创建共享使用大量类似的对象。介绍:享元模式结构特征 优点 1.减少系统创建的个数。因为无需多次创建,静态保存,可共享使用。 2.外部状态和内部相对独立。 缺点 1.存在内部状态和外部状态,增加复杂度。 特点 1.创建大量的对象。 2.对象可共享使用。 ...
2020-03-17 09:21:46 153
VSPD(Virtual Serial Port Driver)虚拟串口
2018-12-26
Allied Vision相机的Vimba独立软件开发工具包(SDK)
2018-12-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人