- 博客(80)
- 资源 (116)
- 问答 (1)
- 收藏
- 关注
原创 C# 函数多个返回值
有时候需要从C#函数中返回多个返回值,而且返回值的类型又不一样,这个时候又不能用数组或者list。其实C#函数是支持多个不同类型的返回值的,请参看下面的code.
2025-02-06 09:24:34
113
转载 C# DataTable在指定位置插入列
如果有一个DataTable已经有了数据,可以通过 DataTable.Columns.Add(new DataColumn("NewCol0", typeof(string))) 来添加新的列,但是如果要把新的列添加到指定位置应该如何操作呢,DataTable没有InsertAt()操作,但是可以通过DataColumn的SetSetOrdinal()来实现。
2022-12-12 10:42:01
4666
转载 UWP中的ListView, GridView, TreeView性能注意点
UWP中ListView, TreeView和GridView的性能提高
2022-08-19 12:13:37
280
转载 UWP DataGrid排序
我们在winform中经常用到DataGridView,好像是自带排序功能的(点击对应列的表头会自动排序)。在UWP的DataGrid中不能自动排序,不过实现起来也不复杂,网上例程不多,但是我在微软MSDN上找到了非常详细的说明和例程。1. DataGrid有一个自带的Sorting时间,在Xmal中为其添加对应的事件函数<controls:DataGrid x:Name="dg" Height="600" Margin="12" AutoGenerateColum
2022-03-19 10:16:36
243
转载 UWP在多线程中更新UI
我们在编程的时候,经常思路是比较直接的,一开始会经常在线程里面去更新界面上元素,然后VS就给我们报错 “不能修改由其他线程创建的对象”。在WPF中,我们会简单地通过调用dispatch的方式在线程中更新UIApplication.Current.Dispatcher.Invoke(()=>{ //update UI code });在UWP中,其实也很简单,只需要多一个函数设置即可。//在MainPage的后台code里面添加这个申明public async vo
2022-03-19 10:06:57
855
转载 UWP在子页面中调用主页面的函数
有时候我们需要在UWP的主页面中调用子页面的函数或者属性,下面是一个例子。//Function in main pagepublic void SetText(String text){ this.txtPageNow.Text = text;}//sub page to call function defined in main page((Window.Current.Content as Frame).Content as MainPage).SetText("your te.
2022-03-15 16:02:25
222
原创 C# 返回泛型的函数
我们都知道C#有泛型,就是类似于List<T> 这样的数据类型,这个用起来非常方便,而且他们也是强类型的,在编程的时候VS可以给足够的编译提示。有时候我们还需要做一些通用的函数,这些函数的返回值类型在调用的时候指定。下面是一个简单的例子:我们需要一个类型转换函数,传入object对象,然后根据指定的类型转化它。这个时候返回值类型是在调用的时候才知道的。写法如下。这只是一个简单的例子,介绍了泛型返回值函数的格式。private T ConvertObject<T>(o
2022-02-10 17:28:06
3318
原创 C# async await 和 IProgress 实现异步耗时操作并更新进度
C# 5.0以后异步编程(线程)变得非常简单而直观,写起来基本就跟顺序编程差不多,逻辑清晰很多。不过我们这些从C#3.0或者更早版本过来的老猿对这些新事物还是有些不适应的,这里给一个简单的示例,演示如何利用async, await实现异步耗时操作,并且通过IProgress实现进度返回并更新UI。程序非常简单,界面上有一个Button和一个TextBox, 其中TextBox用来显示进度 //更新界面的函数 private void ReportProgress(in
2021-11-20 19:24:20
2281
原创 UWP Segoe Icon组合
UWP和WPF中微软提供了很多Icon, 只需要选择Segoe MDL2 Assets字体,然后使用对应的代码即可。这种Icon的好处就是,它是矢量图形,可以通过FontSize设置大小,字体放大之后Icon还是非常清除,没有失真。微软官方提示我们可以把多个Icon叠在一起组合使用,创建出我们需要的组合Icon。但是在Xmal中如何组合呢?网络上找不到什么实例,我自己摸索出来,用Grid即可,而且非常方便。下面我们来在Xmal里面实现一下组合Icon,效果图如下。对应 Xmal如下,不.
2021-11-03 22:02:51
380
原创 UWP保存图片时颜色反相【已解决】
从网上找的代码,把UWP的Xaml的UIElement截图保存到剪贴板中,但是发现颜色都反了。代码和截图如下。具体原因是由于 BitmapPixelFormat.Rgba8引起的,换成 BitmapPixelFormat.Bgra8 之后就好了。 //RenderTargetBitmap to render UIElement to image byte data array RenderTargetBitmap renderTargetBitmap
2021-10-25 21:27:24
273
原创 UWP保存截图到剪贴板
上一篇讲了怎么样把UWP的UIElement截图保存到文件,这一篇再介绍一下如果把UIElement截图复制到剪贴板。其实操作类似,只是保存文件需要FileSavePicker创建文件Stream, 而写入剪贴板我们需要创建MemoryStream,把数据转换后放在内存中,然后用DataPackage把图像数据复制到剪贴板。直接看下面代码吧 //use RenderTargetBitmap to render UIElement to image byte data arra
2021-10-25 21:15:01
265
原创 UWP文字旋转的锚点 RenderTransformOrigin
在UWP中文字旋转不能再用LayoutTranform了,只能用RenderTransform。在文字旋转过程中,我们会问旋转的锚点在哪里,是在文字的中心,还是文字的左上角呢?这个其实是通过TextBlock的RenderTransformOrigin属性控制的,它的值是两个比率,表明锚点在文字的X,Y方向的什么地方。RenderTransformOrigin=“0,0” 代表旋转锚点在文字的左上角,RenderTransformOrigin=“0.5,0.5”表示旋转的锚点在文字的中心。看下面的例子就比较
2021-10-19 19:47:43
550
转载 UWP DataGrid滚动事件和滚动距离(Scroll Offset)
有需要需要给UWP的DataGrid添加滚动事件,并在滚动事件中获取滚动距离(Scroll Offset)。 DataGrid中完全找不到对应的事件和属性, Bing了之后还是在StakeOverflow找到了解决方法,下面是相关代码,通过一个函数找到DependencyObject的ScrollBar对象,然后给它添加ValueChanged的事件,在事件中通过e.NewValue获取滚动距离。我对于DependencyObject和DependencyProperties还不了解,这里代码贴出来给需
2021-09-30 08:40:47
336
原创 UWP DataGrid重复绑定和效率提升 [ScrollViewer耗内存]
我们为了让DataGrid在后台数据更新之后自动刷新显示,一般都用ObservableCollection<T>作为数据源。这个在数据量小的时候没有什么问题,如果数据量大的时候对性能会有影响,因为每次在向ObservableCollection插入数据的时候,都要更新UI。我做了一个实验,向ObservableCollection中添加5000行数据,到DataGrid加载数据完毕,总共用了1s。有时候为了效率,我们更倾向于使用类似于.Net Framework里面的绑定方式,不需要自动更新
2021-09-28 11:56:21
311
原创 UWP StorageFile二进制读取 [Stream]
前面有一篇讲过通过FilePicker让用户选择文件,然后通过StorageFile.OpenStreamForReadAsync() 和 StorageFile.OpenStreamForWriteAsync()返回StreamReader/StreamWritter来读写文文件。https://blog.csdn.net/alai7150/article/details/120036249?spm=1001.2014.3001.5501但是这个方法只能是文本读写(ASCII),如果我们要二进制读
2021-09-07 12:20:03
488
原创 UWP DataGrid后台创建Column和绑定
DataGrid是一个好东西,绑定数据非常简单,而且数据显示的也非常完美。一般一开始学习的时候都是在XMAL里面设定好列与数据绑定的。但是很多时候我们需要在后台动态创建列,并为列绑定我们需要数据。这里我就给个例子,大家看一下。例子稍微有点复杂,加入了复杂属性绑定的演示。其实动态创建列的绑定主要就是要知道用 Binding.PropertyPath 来设置。dgtc.Binding = new Binding() { Path = new PropertyPath("cName") };<
2021-09-06 12:24:22
453
转载 UWP VisualState AdaptiveTrigger不触发
我们有时候需要用到VisualState的Adaptive Trigger来实现UWP控件和window的自适应。但是新手会遇到Adaptive Trigger有时候能行,有时候不行。这里有一个陷阱,就是VisualStateManager必须是Page里面的第一个控件。-------------------------- 以下来自转载内容 ---------------------------我想尝试AdaptiveTrigger,但我的最小Windows 10 UWP应用程序无法启动。&l
2021-09-06 12:05:52
174
原创 UWP DataGrid绑定复杂对象
在UWP中基本上看不到DataTable的使用, 所以一般DataGrid绑定的都是对象的列表。下面是一个比较简单的绑定代码。XAML: <controls:DataGrid Name="SecondGrid" ItemsSource="{Binding Persons}" AutoGenerateColumns="False" Grid.Row="2"> <controls:DataGrid.Columns>
2021-09-05 19:01:34
286
原创 C# 对象定义时初始化
C#中没有像VB with一样的语句,但是我们在定义对象的时候还是可以直接初始化的,类似于VB的with语句。//对象初始化赋值Person p = new Person(){Name="Ian", Age=16, City="LS"};//List初始化赋值List<string> l = new List<string>(){"Time", "Is", "Infinite"};//Dictionary 初始化赋值Dictionary<string, st
2021-09-01 18:41:37
1340
原创 UWP 读写文件 StreamReader/StreamWriter
UWP程序和Winform差异还是蛮大的,UWP毕竟是倾向于移动客户端Application开发,所以权限问题值得被画一下重点。在UWP中,app不能再随随便便访问客户端的文件系统,必须要通过获得用户的同意才可以。UWP的Desktop应用还是这样的,所以刚从Winform转过来UWP我确实很不适应。默认情况下UWP可以访问程序的安装目录(读写), 而且不需要用户授权。其他位置的文件读写都需要用户的授权。比如在用户电脑本地有个文件C:\temp\aa.txt, 你用System.IO.File.Exis
2021-09-01 11:52:32
870
1
原创 UWP FileOpenPicker 的使用注意点
从Winform迁移到UWP之后发现FileOpenDialog这个好用的控件不见了。查了Bing之后才知道在UWP中是用FileOpenPicker了。下面这个就是微软的示例代码,但是放到我们UWP的事件函数中会报错 ”await 只能用于异步方法中,请考虑使用async修饰方法”var picker = new Windows.Storage.Pickers.FileOpenPicker();picker.ViewMode = Windows.Storage.Pickers.PickerVi
2021-08-31 21:42:49
533
原创 C# StringBuilder解决字符串连接耗时问题
我们一般字符串连接用 “+”, 但是在数据量比较大的时候这个操作非常耗时。解决方法其实很简单,就是用StringBuilder代替“+"号连接。代码如下,自己实验效果。//一万行,每行1000此字符连接//加号连接,耗时操作for(int i=0;i<1000;i++){ string lineTxt=""; for(j=0;j<10000;j++) { lineTxt += "A"; } //sw.WriteLine(lin
2021-08-24 22:40:23
442
原创 UWP ToggleMenuFlyoutItem点击后不隐藏MenuFlyout
UWP中的MenuFlyout里面可以支持ToggleMenuFlyoutItem, 每次点击之后会选中或者取消选中状态,但是默认情况下,点击任何一个ToggleMenuFlyoutItem后,真个MenuFlyout会自动隐藏。如果我们想多选的话,没选择一个要重新打开MenuFlyout,特别麻烦。有时候我们想能不能在点选的时候MenuFlyout不自动隐藏,我们可以一次选中好几个ToggleMenuFlyoutItem。这个时候我们就需要处理一下MenuFlyout的Closing事件,在里面把a.
2021-08-17 18:06:51
382
原创 Linux c++服务程序Daemon最简单的实现方式
Linux上面的服务程序就是Daemon守护进程,这里不详情讲Daemon(其实我也不是很了解),这里只是介绍如何实现把C++程序转化为Daemon守护进程。其实将普通程序变成服务进程(启动后就不会在被关闭),主要是将普通程序变成一个类似于“孙悟空”(没有父程序)的程序,就不会因为父进程退出而退出。这里就用到fork的概念,这个我也不是很清楚,有兴趣的可以bing一下。其实c++中提供了一个daemon(int nochdir, int noclose)函数用来实现我们需要的功能,我们只需要在我们的
2021-07-25 19:56:33
876
原创 Linux程序自启动
Linux上面如果要设置某些程序随着操作系统启动而自动启动的方法有很多,这里我介绍两种方法(都来源于网络)。1. 在/etc/rc5.d/目录下建立一个启动脚本:Sxxxx脚本需要以“S”开头,代表STARTrc*.d, 这里面有很多rc0.d, rc1.d .... rc6.d 这些对应不同的启动权限,可以bing一下/usr/local/bin/service.exe重启电脑,重启之后通过ps -aux|grep 'service' 查看是否已经自动启动。注意:这里设置的自..
2021-07-25 19:43:19
1488
原创 Linux C++ sleep in ms
Linux C++ 中 sleep(s) 函数是按秒来计算的,如果想要sleep毫秒级,那就需要用到usleep(us),其中的参数是us 微秒。如果要休眠1ms,那就用usleep(1000) 就可以了。
2021-07-07 20:53:20
4313
原创 VS在多工程解决方案中不能停在错误行[解决]
一般VS在调试的时候会自动停在出错的行,但是当我们解决方案中有多个工程时,有时候会由于VS设置的问题导致在子工程中无法自动停留在出错的行。这个设置如下:VisualStuido -> 工具-> 选项...
2021-04-26 22:03:42
277
原创 C# Reflection设置delegate/event, BackgroundWorkder跨类调用
C# 的Reflection非常有用,可以用它创作出更加通用,扩展性更好的程序(Reflection的效率会低一些)。Reflection用的最多的地方是在子程序的DLL有其他人开发的时候,主程序通过Reflection调用DLL的方法完成额外的任务。有时候主程序需要跟子程序DLL进行交互的时候,尤其是子程序耗时比较长的时候,我们需要反馈执行进度(异步执行),这个时候就需要用到Delegate来给子程序类绑定主程序的界面更新函数。相信大家对于通过Refelection的MethodInfo的Invo
2021-04-13 17:12:54
309
1
原创 C#类型后加问号 int?
偶然间发现C#类型还有一种特俗的操作,就是在类型后面加上问号。这种类型是可为空的类型。int? a=null; //可为空的int类型a=10;float? b=null;//可为空的float类型b=12.1f;double? c=null;//可为空的double类型c=100.059;//... ...//string 类型没有 string?的形式//如何使用呢?int age = a + 10;//这个会报错的//正确使用方法如下if(a != null )
2021-04-12 10:16:38
5056
3
原创 Linq to DataTable 滤除 DBNull
用Linq来查询DataTable是非常方便,效率也是很高的。下面是一个示例代码。 //Define a data table and top up data with null in Age Field DataTable dt = new DataTable(); dt.Columns.Add("ID", typeof(int)); dt.Columns.Add("Name", typeof(string
2021-03-31 19:29:33
1011
原创 C# 读取注册表失败
遇到奇怪现象,用RegEdit打开注册表可以看到键和值都有。但是用C# RegistryKey.GetValue()就是无法获取到值。当然注册表的权限已经全部设置好了。这个奇怪的问题,可以看一下是否在x64位电脑上编译成x86/AnyCPU的程序了,尝试编译成x64的程序应该就可以了。更多信息请访问下面的博文https://www.codeproject.com/Articles/51326/Net-Compilation-registry-accessing-and-applicatio.
2021-03-29 10:05:19
1502
转载 C#在初始化对象时类似与VB With的写法
用过VB的童鞋都知道VB中有With关键字,可以省略每次重复写对象名。C#中有没有呢?其实是有的,在C#中初始化对象时,是有类似的写法的,请参看下面的code。vb codedim u as new user;with user .id = 123456 .name = "Username" .password = "pwd"end withC# codeUser u = new User(){ id = 123456 .
2021-02-02 16:20:45
553
转载 转 - C# WinForm在高分辨率下界面模糊问题的解决
转自知乎前言昨天刚搞定了DevExpress,今天就遇到了之前遇到过的一个问题,那就是WinForm在高分辨率下界面模糊。我的开发环境是Windows10 64位和VS2010,电脑屏幕分辨率为1920*1080,采用的是WinForm程序设计方法开发。在程序运行时遇到了这样一个问题,在VS设计的很清晰的菜单和界面,运行的时候菜单和控件上字体变得很模糊,界面大小也发生了变化。于是上网寻求解决办法,网友给出的解决方案有以下3种。WinForm对高分屏的支持不好,用WPF程序设计可以解决该问题。(这
2021-01-20 10:02:31
1777
2
原创 WPF保存图片
其实在WPF中保存图片是非常容易的,并且可以指定把任何对象或者子对象。你指定的对象和他的所有内部内容都会被输出到图片。具体代码如下,其中“MainGrid"是一个Grid, 当然你可以指定任何XMAL中的对象,比如Canvas, Panel等等。string fileName = @"snap.bmp";System.IO.FileStream fs = new System.IO.FileStream(fileName, System.IO.FileMode.Create);RenderTa
2021-01-18 07:56:34
1084
原创 DataGridView动态加载部分数据防止卡顿[源码]
DataGridView是我们显示表格数据最常用的控件, 非常好用,功能强大。但是当数据量特别大时(不管是行还是列,行的影响会小一些,列的影响特别明显)直接绑定数据会占用很久的时间,并且不能响应用户的操作而造成卡顿。所以我们就需要用到动态加载,加载部分数据,当用户滚动到边界时再加载后面的一部分数据,我们控制每次加载的行或者列的数量来保证加载速度。我们以动态加载列为示例,下面示例建立了一个1000列的table,每次加载100列供当前DataGridView显示。我们已经尝试过创建10000列的table,用
2020-12-18 20:57:21
1759
1
ETS364 Programmers_Book_Rev6_READER+COMMENTS.pdf
2020-03-21
ETS364上LOG2CSV工具
2020-03-21
ETS364 - Basic Programming (Color).doc
2020-03-21
FundamentalOfTestingOnATE.ppt
2020-03-21
LTX TS88手册
2020-03-21
J750 Specification
2020-03-21
J750 trainning meterial.zip
2020-03-21
Verigy_HP93K_Application_Paper.zip
2020-03-21
TinyCAD_2.90.00_686_Production_Release.exe
2020-03-20
PaxAC_X-Series_Specifications.pdf
2020-03-20
Introduction to Unison Mixed Signal_PreCourse_1021_1_file.pdf
2020-03-20
FLEX_microFLEX_Programming_Fundamentals_Class_Student_Manual.pdf
2020-03-20
IGXL平台上OI (operator interface)开发指导书
2020-03-20
微软UWP开发教程_2263页.pdf
2021-08-15
C#写的自动压缩指定目录的大文件[源码]
2020-07-08
Keithley 2400手册.pdf
2020-04-16
STDF_Extractor_2.41aLV.exe
2020-03-21
植物大战僵尸游戏 [windows]
2020-03-20
Office 2003 Application Development All-in-One Desk Reference for Dummies.pdf
2020-03-20
BAT教程 [Win32 Shell Scripting Tutorial]
2020-03-20
mathnet-numerics-data-master.zip
2020-03-20
mathnet-numerics-master.zip
2020-03-20
C# GDI+程序设计
2020-03-20
jdk-7u60-ea-bin-b15-macosx-x86_64-16_apr_2014.dmg
2020-03-20
GoogleChromeStandaloneEnterprise.msi
2020-03-20
cpu-z_1.78-cn.exe
2020-03-20
JMP和Matlab的图表是用什么技术做的?为什么可以交互也可以直接复制到剪贴板
2018-03-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人