好久没写原创了,今天心血来潮,打算写一篇,关于特定的知识点之前写过很多,今天呢就写一篇综合性的偏应用的一个小的项目实战.

01

重要的知识点

本篇内容基于CM框架编写,涉及以下知识点:

① CM框架下一个控件附加多个事件:

cal:Message.Attach="[Event MouseRightButtonDown]=[datagrid_MouseRightButtonDown($source,$eventArgs)];[Event LoadingRow]=[DG_LoadingRow($source,$eventArgs)]"

②datagrid添加行号:

DG.LoadingRow += new EventHandler<DataGridRowEventArgs>(DG_LoadingRow);
public void DG_LoadingRow(object sender, DataGridRowEventArgs e){e.Row.Header = e.Row.GetIndex() + 1;}

③datagrid右键点击添加菜单:

public void datagrid_MouseRightButtonDown(object sender, MouseButtonEventArgs e){dGrid = (System.Windows.Controls.DataGrid)sender;menu1 = new System.Windows.Controls.ContextMenu();System.Windows.Controls.MenuItem menuitemFunc1 = new System.Windows.Controls.MenuItem();System.Windows.Controls.MenuItem menuitemFunc2 = new System.Windows.Controls.MenuItem();System.Windows.Controls.MenuItem menuitemFunc3 = new System.Windows.Controls.MenuItem();menuitemFunc1.Header = "移动到此位置";menuitemFunc2.Header = "删除此行信息";menuitemFunc3.Header = "导出数据";menuitemFunc1.Click += MoveToPostion_Click;menuitemFunc2.Click += DeleteRow_Click;menuitemFunc3.Click += ExportData_Click;menu1.Items.Add(menuitemFunc1);menu1.Items.Add(menuitemFunc2);menu1.Items.Add(menuitemFunc3);menu1.StaysOpen = true;}

④浏览选择文件路径和浏览选择文件

public void Load(){//lblStr = "you hit mine! i am lable";OpenFileDialog openFileDialog1 = new OpenFileDialog();openFileDialog1.Filter = "图片|*.jpg;*.jpeg;*.bmp;*.png;*.gif";openFileDialog1.FilterIndex = 1;//当前使用第二个过滤字符串openFileDialog1.RestoreDirectory = true;//对话框关闭时恢复原目录openFileDialog1.Multiselect = false;openFileDialog1.Title = "选择文件";try{if (openFileDialog1.ShowDialog() == DialogResult.OK){System.Windows.MessageBox.Show("你选择了文件" + openFileDialog1.FileName);}}catch (Exception ex){Console.WriteLine(ex);}}
public void BrowseSavePath(){FolderBrowserDialog browserDialog = new FolderBrowserDialog();browserDialog.Description = "请选择路径";try{if (browserDialog.ShowDialog() == DialogResult.OK){if (string.IsNullOrEmpty(browserDialog.SelectedPath)){System.Windows.MessageBox.Show("文件夹路径不能为空");return;}BrowseDataSavePath = browserDialog.SelectedPath;DataExport(BrowseDataSavePath);}}catch (Exception ex){Console.WriteLine(ex);}}

⑤wpf图片显示的两种操作方式;

方式1:

/// <summary>/// 图片加载显示完成后释放/// </summary>/// <param name="imagePath"></param>/// <returns></returns>public static BitmapImage LoadImageFreeze(string imagePath){try{BitmapImage bitmap = new BitmapImage();if (File.Exists(imagePath)){bitmap.BeginInit();bitmap.CacheOption = BitmapCacheOption.OnLoad;using (Stream ms = new MemoryStream(File.ReadAllBytes(imagePath))){bitmap.StreamSource = ms;bitmap.EndInit();bitmap.Freeze();}}return bitmap;}catch (Exception){return null;}}

方式2:

/// <summary>/// bitmap转换成imagesoure/// </summary>/// <param name="hObject"></param>/// <returns></returns>[System.Runtime.InteropServices.DllImport("gdi32.dll")]public static extern bool DeleteObject(IntPtr hObject);public static ImageSource ChangeBitmapToImageSource(Bitmap bitmap){IntPtr hBitmap = bitmap.GetHbitmap();ImageSource wpfBitmap = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(hBitmap,IntPtr.Zero,Int32Rect.Empty,BitmapSizeOptions.FromEmptyOptions());if (!DeleteObject(hBitmap)){throw new System.ComponentModel.Win32Exception();}return wpfBitmap;}

⑥datagrid添加RadioButton并实现互斥

<DataGridTemplateColumn  Header="Radio" MinWidth="50"><DataGridTemplateColumn.CellTemplate><DataTemplate><RadioButton IsChecked="{Binding GroupSelect,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" GroupName="Mutex" IsEnabled="{Binding RadioEnabled}" /></DataTemplate></DataGridTemplateColumn.CellTemplate></DataGridTemplateColumn>

02

操作演示

技术群:添加小编微信并备注进群

小编微信:mm1552923

公众号:dotNet编程大全

C# 项目实战(经典)相关推荐

  1. C# 值得永久收藏的WPF项目实战(经典)

    01 - 简介 之前也写过好多篇CM框架相关的项目实战文章,比如: C# WPF框架Caliburn.Micro快速搭建 C# WPF框架Caliburn.Micro入门实例1 C# WPF MVVM ...

  2. C# WPF项目实战(经典)

    目的:输出两台摄像头图像和两路设备图像,每一路设备截图6张 主要知识: 1. 通过SDK调取摄像头图像,并对图像进行剪裁: 2. WPF中定时器DispatcherTimer用法: 3. WPF中跨线 ...

  3. C# WPF MVVM项目实战(进阶②)

    这篇文章还是在之前用Caliburn.Micro搭建好的框架上继续做的开发,今天主要是增加了一个用户窗体ImageProcessView,然后通过Treeview切换选择项之后在界面显示不同效果的图片 ...

  4. C# WPF MVVM项目实战(进阶①)

    这篇文章还是在之前用Caliburn.Micro搭建好的框架上继续做的开发,今天主要是增加了一个用户窗体TestFormView,然后通过TabControl,将新增的窗体加载到主界面上进行分页显示, ...

  5. 【项目实战合集】计算机视觉毕业设计项目怎么选,超30个经典案例供你选择...

    每年到了搞毕业设计的时候,很多学生朋友都很头疼,指导老师给不了好题目,自己也没有什么好的想法,怕选的太容易了过不了,怕选的太难了做不出!今年我们在计算机视觉方向出了[超过30个基于Pytorch框架] ...

  6. 浙大博士导师整理:Tensorflow和Pytorch的笔记(包含经典项目实战)

    作为一名AI工程师,掌握一门深度学习框架是必备的生存技能之一. 自 TensorFlow 从 Google 中脱颖而出以来,它在研究和商业领域成为最受欢迎的开源深度学习框架,紧接着 从 Faceboo ...

  7. python从入门到项目实战李兴华网盘_贺胜军Python轻松入门到项目实战【经典完整版】...

    贺胜军Python轻松入门到项目实战课程目录 01_Python基本概述 01_计算机组成_操作系统.avi 02_计算机的进制.avi 03_数据存储单位1.avi 04_编码和解码.avi 05_ ...

  8. 清华博士导师整理:Tensorflow和Pytorch的笔记(包含经典项目实战)

    作为一名AI工程师,掌握一门深度学习框架是必备的生存技能之一. 自 TensorFlow 从 Google 中脱颖而出以来,它在研究和商业领域成为最受欢迎的开源深度学习框架,紧接着 从 Faceboo ...

  9. 清华博士导师整理:Tensorflow 和 Pytorch 的笔记(包含经典项目实战)

    作为一名 AI 工程师,掌握一门深度学习框架是必备的生存技能之一. 自 TensorFlow 从 Google 中脱颖而出以来,它在研究和商业领域成为最受欢迎的开源深度学习框架,紧接着 从 Faceb ...

  10. 手把手教你洞悉 PyTorch 模型训练过程,彻底掌握 PyTorch 项目实战!(文末重金招聘导师)...

    (文末重金招募导师) 在CVPR 2020会议接收中,PyTorch 使用了405次,TensorFlow 使用了102次,PyTorch使用数是TensorFlow的近4倍. 自2019年开始,越来 ...

最新文章

  1. 记一个UltraEdit15.10注册码
  2. [***]HZOJ 柱状图
  3. Unity UGUI - Canvas / Camera
  4. AXURE在原型设计中的应用
  5. matlab产生一组均为一的矩阵,在matlab中如何从一组数中得到随机数组成一个n*n的矩阵...
  6. html5与css3入门知识点精炼
  7. 【计算机思维】面向人的开发 站在巨人的肩膀上
  8. 如何将风险应用加入白名单_理财要如何将资金分散呢?可以参考风险分散和分享经济红利的思路...
  9. SQL63 刷题通过的题目排名
  10. 关于php变量的赋值和引用的区别
  11. 卸载Oracle 12c
  12. mac安装仿宋GB2312字体
  13. intel服务器最新主板芯片组,Intel C200芯片组:入门级、发烧友至爱_Intel服务器主板_服务器评测与技术-中关村在线...
  14. 2020年最新Java后端学习路线,适用于所有Java初学者!
  15. 华为荣耀c4刷入linux系统,华为荣耀畅玩4C移动4G(CHM-TL00 Android 4.4)刷Recovery教程
  16. 深入浅出理解Java并发AQS的共享锁模式
  17. 【深度学习】隐马尔科夫
  18. PostgreSQL 基础--常用命令
  19. 三极管 和 场效应管 的工作原理 简要概述
  20. 现在做什么小生意比较挣钱,这4种生意适合普通人干!

热门文章

  1. 安卓分屏神器_【实用工具】一款鲜为人知的电脑神器,内置300多…找了很久了!...
  2. linux内核api作用,内存管理 – Linux内核API get_unmapped_area
  3. Asterisk入门教程
  4. 等额本息和等额本金 计算公式
  5. 为什么说12306比淘宝双十一的技术挑战更大?
  6. cce是什么意思_CCE 是什么
  7. 《基于MFC的OpenGL编程》Part 7 Animation
  8. html调用js的方法
  9. 小学四年级计算机在线考试,小学信息技术四年级下册试题.DOC
  10. RGB色彩空间转CMYK色彩空间