- 博客(155)
- 收藏
- 关注
原创 Nito.Async库应用于ContextSwitchDeadlock、DisconnectContext 异常的处理(比如Office开发可能遇到此异常)
编写Office程序的时候,由于处理时间过程,出现异常的问题,比如提示说下面的问题:有些资料将在异常设置中,取消选择ContextSwitchDeadlock,DisconnectContext等选项,然后点击继续运行。在调试过程中,确实可以继续运行。但是这并没有解决问题,不是调试状态依然存在问题。问题根源:把耗费时间的程序放在UI线程中是主要问题。一种可行的解决方案:(1)把耗时的工作,尤其是与COM相关的工作全部不要放在UI线程中;(2)由于调用office的API,在S
2022-04-01 12:35:58
623
原创 MAUI编写win桌面程序之使用文件对话框和文件夹对话框
(1)Windows版本的程序中使用文件夹对话框FolderBrowserEx对于打开文件夹对话框,可以使用FolderBrowserEx.安装到Windows程序的依赖项中。在对应的平台(Windows)下创建MyService.cs(根据语义随意命名,但需要与),创建分部类MyService,在其中写入调用文件夹的代码。此外,也需要在项目目录(非平台特定目录)下创建同名的MyService分部类作为接口。接口性质的分部类MyService如下所示。...
2022-01-28 15:26:02
1675
原创 ExcelDNA的入门使用
ExcelDNA用于开发自定义函数方面比较方便。具体使用分以下步骤:(1)利用vs创建一个类库项目;(2)利用NUGUT引入ExcelDna.AddIn(3)建一个类,写入自定义函数。注意,自定义函数应该用static修饰using ExcelDna.Integration;public class MyFirstDnaFunction{ [ExcelFunction(Description="Add one number to another", Category.
2021-09-24 15:27:55
10581
原创 Asp.net core Identity的配置
//添加数据库的配置信息 services.AddDbContextPool<WebApplication4Context>( dbContextOptions => dbContextOptions .UseMySql( // Replace with your connection string. ...
2021-05-30 16:43:22
243
1
原创 Asp.Net Core Identity中IdentityUser对象的PasswordHash解析
PasswordHash的组成说明(一) 概述Asp.Net Core Identity中的IdentityUser表中,PasswordHash默认是一长串的Base64格式的字符串,目前版本称为V3,而Asp.Net Identity中的版本称为V2。比如,在网页注册页面输入的密码Ss_123,可能生成的PasswordHash为:AQAAAAEAACcQAAAAEHfLUrXi8Zh9fMzc6PC4b0q1JzQYhMoVMlTUFtJnIuMhMKfuOqw+tVz/1pXg0jzHg
2021-05-23 08:09:48
1509
原创 Base64Url, IDataProtectionProvider
(一)Base64Url为了在url中对数据进行编码,不适合直接使用Base64编码,通常可以使用Base64Url编码,即替换掉+/=符号后的Base64码。原生的Base64编码解码可以利用Convert.ToBase64String()和Convert.FromBase64String()来完成。但是Convert类中没有直接转换为Base64Url的方法,以下的方法时可以的:(1)在Microsoft.AspNetCore.WebUtilities中存在类WebEncoders,可以实现
2021-05-20 17:19:35
178
原创 Asp.net Core 的Session开启
在start.cs文件的ConfigureServices(...)中配置。 public void ConfigureServices(IServiceCollection services) { services.AddDistributedMemoryCache(); //必须使用,代表在内存中存放session。当然也可以使用sqlserver或redis来存放,使用对应的方法 // services.AddSe...
2021-05-18 18:18:47
290
原创 WPF之PasswordBox控件的Password属性绑定
Password控件无法直接将Password属性绑定到ViewModel中Password属性,其原因在于Password属性并不是依赖项属性。为了进行绑定,可以写一个静态类来实现附加属性的绑定。依据 WPF Tutorial 上的例子如下:public static class PasswordHelper{ public static readonly DependencyProperty PasswordProperty = DependencyProperty.Re
2021-05-15 14:21:44
923
原创 asp.net core 返回400、500错误的原因
返回400错误的原因可能有多种,如下记录原因:返回400的badrequest错误。当传递对象时,在服务器会重新将json字符串解析为对象,在这个过程中,如果对象使用了System.ComponentModel.DataAnnotations中的特性,则默认情况下asp.net core 除了将json解析为对象外,还会使用特性来进行数据验证。如果数据验证失败,则返回400错误。...
2021-05-15 11:22:58
3477
原创 c#通过NPOI将集合数据输出到Excel
NPOI中输出数据的方式,直接上参考代码: IWorkbook workbook = new XSSFWorkbook();//对于xlsx格式,如果xls则不是这样的 ISheet sheet = workbook.CreateSheet(sheetName);//以下创建CellStyle ICreationHelper createHelper = workbook.GetCreationHelpe
2021-05-05 11:36:57
213
原创 MahApps中的MetroAnimateSingleRowTabControl的使用
直接上代码: <mah:MetroAnimatedSingleRowTabControl x:Name="MetroTabControlClosable" FlowDirection="LeftToRight" DataContext="{Binding MyData}" ItemsSource="{Binding Ta
2021-05-05 10:36:26
384
原创 MahApps用户UI库中DataGrid中单元格字体颜色根据数字动态变化的样式设置
为了改变DataGrid中单元格字体颜色,可以设置CellStyle属性。首先定义Style,使其从MahApps.Styles.DataGridCell继承,然后将定义好的style赋值为DataGridTextColumn的CellStye属性,可以从xaml中赋值,也可以在back code中赋值。以下两个例子:(1)绑定到枚举值的例子,枚举直接写出其整数值,不要直接写枚举的字符 <Style x:Key="TextBlockForMyEnumCellSt
2021-05-05 10:19:42
272
原创 MahApps用户类库中DataGrid中ClearTextButton的取消
MahApps用户类库中DataGrid默认样式是其TextBox在编辑时,包含ClearTextButton。当表格中列数很多的时候,往往不需要ClearTextButton,否则双击进入编辑状态时常常不小心就把填好的内容删除掉了。通过定义如下的代码(当然具体样式参数根据需要设置),然后再设置DataGridTextColumn中设置EditingElementStyle就可以了。<Style x:Key="TextBoxEditingWithoutClearBtn" BasedOn="{St
2021-05-05 10:09:12
133
原创 MahApps用户UI库的基本使用
MahApps用户UI库是Metro风格的库,提供了很多控件/样式。首先通过Nuget安装该类库。然后在App.xaml中添加命名空间和ResourceDictionay即可使用。具体使用方式参见官方文档。当然,官方文档写得不详细,使用时常常要根据github上的Demo来参考如何写。xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls" <Application.Resources> <...
2021-05-05 09:59:53
1207
原创 .net中几种基本的对象间通信方式(直接调用、基本事件、delegate委托、EventBus)
对象间通信方式有多种,以下仅仅考虑最基本的几种方式:假设两个对象A和B需要通信,分三种情况考虑:(一)A和B互相持有对方的引用,此时通信最简单,都可以互相直接调用。(二)对象A直接持有对象B的引用,反过来B对象不持有A对象的引用(1)A对象可以直接使用B对象的方法和属性。(2)B对象不持有A对象的属性,则不能直接调用。此时对象B需要A配合完成某项工作,常常采用的方式:基本事件方式,委托持有,EventBus方式。 对于基本事件方式,即B中定义事件,A在获得B引用的时候就...
2021-05-05 09:43:50
592
原创 WPF数据绑定时FallbackValue和TargetNullValue的使用
(1)FallbackValueFallbackValue针对无法绑定(给定的Path不存在)时使用的默认值,默认情况下为UnsetValue.若绑定源的路径解析成功,且值转换器能够正确转为结果值,且该值对绑定目标属性有效,则会正常绑定数据,不会使用FallbackValue的值。如果不能正常绑定,则会使用FallbackValue值。常见的使用状况为:当绑定对象不存在时,什么都不要显示,存在时,根据给定的bool值判断是否显示。比如以下代码: ...
2021-05-05 09:07:22
1580
原创 DotNetProjects.WpfToolkit.Input库中的AutoCompleteBox控件
AutoCompleteBox是根据输入及时给出匹配选项供输入人员选择的控件。DotNetProjects.WpfToolkit.Input库提供了该控件。通过NuGet安装如下所示:使用AutoCompleteBox时,首先需要引入命名控件:xmlns:input="clr-namespace:System.Windows.Controls;assembly=DotNetProjects.Input.Toolkit"然后可以使用该控件。参考例子如下: <inpu.
2021-05-05 08:34:46
346
原创 WPF中资源图片的引用
在WPF中,为了引用资源图片,比如loading.gif,则可以使用Uri来定位。比如:<Image Source="pack://application:,,,/Resources/loading.gif"/>也可以简写:<Image Source="/Resources/loading.gif"/>(注意:上述xaml实际上也是无效的,Image控件不能显示动态的gif图片,此处仅仅用于说明资源路径的用法,如果把gif换成png或jpg图片,就没有问题了。
2021-03-18 09:17:37
1707
原创 在WPF中使用gif图片的XamlAnimatedGif包
为了在wpf中显示gif,可以使用XamlAnimatedGif包。打开Nuget,搜索XamlAnimatedGif,如果使用.NET5,则安装KsWare.XamlAnimatedGif.Wpf.StrongName,如下图所示。典型用法为:首先添加命名空间映射xmlns:gif="https://github.com/XamlAnimatedGif/XamlAnimatedGif"使用Image控件,为其设置附加属性<Image gif:Animation..
2021-03-17 15:32:25
1844
原创 MySql从一张表转移数据到另一张表
对于MySql,从一张表转移数据到另一张表,常见以下两种方式:(1)如果两张表结构完全一样,使用简单的insert语句即可:INSERT INTO TargetTableName SELECT * FROM SourceTableName;(2)如果两张表结果不完全一样,则在INSERT语句中需要将转移的数据字段名称一对一列出来(字段用反引号括起来),如下所示INSERT INTO TargetTableName (`taget-table-col1`, `taget-tabl...
2021-03-17 11:05:21
5952
原创 解决asp.net core 3.1/5.0下的webapi默认返回数据为驼峰格式问题
asp.net core 3.1或5.0环境下,默认情况下返回数据对象的时候,对象属性名称被序列化为json时会使用小驼峰格式,比如CompanyName会被序列化为companyName。若客户端和服务器端共用数据类,则在客户端解析的时候,默认情况下由于无法把companyName匹配到CompanyName,因此无法正确解析为数据对象。解决此类问题的一种方式就是让服务器端不要返回小驼峰格式的数据,即取消服务器的默认小驼峰序列化规则。在服务器程序的Start.cs中可以通过配置来解决,具体说明如下:
2021-02-18 17:21:10
1617
原创 Asp.net core 中数据绑定时,模型属性需要public可写
Asp.net core 中数据绑定时,使用默认绑定器的情况下,模型属性需要公开可写,即public set,否则对应的数据无法绑定。
2021-02-18 16:30:19
115
原创 .net core版WPF项目名称为xxxxxxClient时,无法输入中文
.net core 版本的WPF项目,当项目名称取为CRManaClient时,TextBox输入中文时,若输入法为搜狗拼音输入法,则无法输入中文。.net Framework版本的WPF项目,目前没有发现这种问题。
2021-02-17 11:50:00
213
原创 .net项目中的多目标框架配置初步
.net 项目的解决方案文件夹中,可以使用directory.build.props和directory.build.targets文件来配置解决方案基本信息。对于多框架目标(比如既支持.net4.6又支持.netcore3.1),则可以在directory.build.props配置文件中配置。在vs中打开后,这两个文件位于Solution Items节点下面。打开Directory.Build.Props文件后,可以看到TargetFrameworks节点信息如下,包含了net46和netcor
2021-02-16 08:14:22
1466
原创 Asp.net core部署于IIS及环境设置(Production/Staging/Development)
根据需要,发布程序过程中的各种细节可能比较复杂,也可能很简单。这里仅介绍一种比较基本的方式:如果,主要分为以下几个步骤:(1).net core 配置在具有IIS的服务器上安装.net core。具体可以在https://dotnet.microsoft.com/download/dotnet/5.0 是网站上下载,选择HostingBundle,安安装包包含.net core 的运行环境及IIS托管所需要的,下载完成后双击安装,安装完成后重启(也可以进行命令操作来代替重启,具体方法百度找下)。
2021-02-06 11:43:15
816
原创 Razor Pages项目的一些规则/坑
在Asp.net Core Razor Pages中,<label asp-for="Movie.Name"/>不能被正常渲染,即显示不出来Name;修改为:<label asp-for="Movie.Name"></label>
2021-01-28 11:07:46
1233
1
原创 Net 5.0中MySql+EntityFrameworkCore的配置尝试
(一)使用Nuget添加依赖包添加如下三个包注意:本来使用MySql.Data.EntityFrameworkCore(具体是8.0.22版本),而不是Pomelo.EnityframeworkCore.MySql,但在执行下面第二步的时候出现了异常,异常关键信息如下:Method not found: 'Void Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping..ctor(System.String, System.Typ
2021-01-01 21:33:04
5783
原创 列正交矩阵一定是行正交矩阵,反之亦然
若A矩阵为列正交矩阵,则A一定是行正交矩阵。证明:若A矩阵为列正交矩阵,则A的每个列向量两两正交,则,,从而可以求得,即A的任意两行的内。积等于0,任意行自身内积等于1,即A为行正交矩阵。...
2020-12-27 11:35:33
7358
5
原创 NPOI遇到的问题Unexpected ptg class (ArrayPtg)
Unexpected ptg class (ArrayPtg)NPOI遇到的问题: 遇到解析不了的公式了
2020-11-01 17:42:21
1081
原创 使用Include扩展方法来使用EntityFramework贪婪加载
使用DbSet<T>类的扩展方法(位于EntityFramework程序集的System.Data.Entity命名空间,所以别忘了添加using System.Data.Entity),可以使用EntityFramework的贪婪加载。比如有主表ATable,子表BTable,在加载A表中记录(对象)的时候同时加载子表B中的记录(对象),则:context.ATables.Include(a=>a.具体的导航集合属性).where(...);比如有主表ATable,子表...
2020-10-24 07:59:24
725
原创 MYSQl端口号修改、公开端口号
(一)修改MySql端口【可以不改的,就使用默认端口号3306,如果不改的话,则跳过这一步】直接在my.ini配置文件(默认在c:\ ProgramData\MySQL\MySQL Server 5.7文件夹下),将port的值改为需要的端口号。【切记】修改之前,备份一下。如果修改失败,可以把备份的重新拿过来修改.操作是,有可能会遇到过在windows server上修改my.ini,修改后,重新服务器时,始终无法重新启动。提示就是请键入 NET HELPMSG 3523以获得更多的帮助。该
2020-10-16 23:16:29
2903
原创 使用System.Component.DataAnnotations命名空间下的Validator类和ValidationContext及一系列特性对数据有效型进行验证
对于具体的某个类,其成员可以添加使用System.Component.DataAnnotations命名空间下一系列特性(如RequiredAttribute,MaxLengthAttribute,StringLengthAttribute,RangeAttribute等等),然后通过该命名空间下的ValiationContext和Validator类来对其进行验证,验证结果返回bool值,并将详细验证结果保存在List<ValidationResult>集合中。Validatio.
2020-10-01 23:11:44
324
原创 EntityFramework+MySql在插入数据的时候,出现代码1054的异常,提示:Unknown column ‘xxx_Id‘ in ‘field list‘
这个是由于默认情况下,外键会使用"xxx_id“的命名方式,其中xxx是外键所指向的表的名称。当不是这样的命名方式的时候(比如一对一关系的时候将本表的Id作为外键),就会出现这样的异常。解决方式:在Entity类的外键属性上,手工增加ForeignKey特性,即[ForeignKey("外键所指向的表名称")]...
2020-09-28 21:06:04
330
原创 Asp.Net 返回Json数据的方式
如果要返回Json数据,则可以使用返回HttpResponseMessage对象的方式。 public HttpResponseMessage Get(string id) { HttpResponseMessage response = new HttpResponseMessage(); string jsonStr=XXXService.Get(id); //get data by Service
2020-09-27 14:54:41
1595
原创 Asp.Net WebApi中MySql+EntityFramework的配置
(一)环境配置:Connector和类库(MySql.Data.EntityFramework、MySql.Data和EntityFramework)的安装。MySQL Connector/NET的下载如下。下载后默认安装即可。MySql.Data.EntityFramework、MySql.Data和EntityFramework的安装。只需要Nuget安装MySql.Data.EntityFramework,另外两个将会被自动安装:(注意:上图中记得选择安装MySql.Data.En
2020-09-20 17:18:34
1141
原创 Unity Ioc在WebApi中的配置方法:方式二(更简单方便)
步骤一:NuGet添加Unity.AspNet.WebApi的引用添加完成后,会在App_Start文件夹下自动生成两个文件,分别为UnityConfig.cs和UnityWebApiActivator.cs,其中UnityConfig用于配置依赖注入对象,UnityWebApiActivator用于通知WebApi程序启用Unity(说明:UnityWebApiActivator.cs 文件中的).步骤二:打开UnityConfig.cs文件,配置Unity信息...
2020-09-19 16:27:11
195
原创 Unity Ioc在WebApi中的配置方法:方式一
在WebApi中使用Unity IOC容器,则除了安装Nuget包之外,还需要三个步骤:(1)创建UnityContainerFactory;(2)实现IDependencyResolver接口;(3)注册IDependencyResolver的实现类。一、创建UnityContainerFactoryUnityContainerFactory作为提供容器的工厂类,需要将容器作为单例类来管理。方式一: public class UnityContainerFactory .
2020-09-17 21:21:27
345
原创 C#之LINQ中常用的ToLookup,GroupBy, Join之用法总结
一、ToLookupLookup<TKey,TElement> 类 class Student { public string Name; public double Weight; public int Age; } class Program { static void Main(string[] args) { LookupExample(
2020-09-06 18:13:45
2068
原创 C#中常用的非泛型委托-AsyncCallback
委托AsyncCallback 即 delegate void System.AsyncCallback(System.IAsyncResult ar)其中IAsyncResult是表示异步操作状态的接口,由委托中的异步方法BeginInvoke返回得到,即IAsyncResult BeginInvoke(...)
2020-09-05 20:30:43
406
原创 C#中常用的几种预定义委托
在System命名空间中,定义了一些常用的委托,如Action,Func,Predicate,Comparison,Converter, EventHandler等。需要注意的是,参数带有in的,表示逆变;参数带有out的,表示协变。Action<in T> 或Action<in T1,...,in Tn> 即 delegate void System.Action<in T1,...,in Tn>(T1 arg1,...,Tn argn) //F...
2020-09-05 17:18:26
278
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人