winform

Winform中使用FastReport的PictureObject时通过代码设置图片源并使Image图片旋转90度

孤街醉人 提交于 2019-12-02 02:34:14
场景 FastReport安装包下载、安装、去除使用限制以及工具箱中添加控件: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100893794 Winform中使用FastReport实现简单的自定义PDF导出: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100920681 参照上面实现使用FastReport导出PDF的实现后,如果要显示照片可以使用 PictureObject控件来显示照片。但是如果在代码中怎样获取当前PictureObject对象并设置 其图片源为Image对象,并且使照片旋转90度。 注: 博客主页: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书、教程推送与免费下载。 实现 在设计模板时拖拽一个PictureObject 然后在代码中前期加载模板 Report report = new Report(); //获取项目目录 string baseDir = System.Windows.Forms.Application.StartupPath; //拼接模板文件目录 var reportFile = Path.Combine

C# Winform 文本框默认提示信息

北战南征 提交于 2019-12-02 01:48:13
private string Notes = "提示文本"; private void textBox1_Leave(object sender, EventArgs e) { // 退出失去焦点,若文本框内容为空,重新显示 if (string.IsNullOrEmpty(textBox1.Text)) { textBox1.ForeColor = Color.DarkGray; this.textBox1.Text = Notes; } } private void textBox1_Enter(object sender, EventArgs e) { // 进入获得焦点,若文本框内容为“提示文本”,清空 if (textBox1.Text == Notes) { textBox1.ForeColor = Color.Black; this.textBox1.Text = ""; } } 来源: https://www.cnblogs.com/baissy/p/11724042.html

C# Winform控件字体大小自适应

点点圈 提交于 2019-12-02 01:47:14
using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; namespace WGClient { class AutoSizeFormClass { //(1).声明结构,只记录窗体和其控件的初始位置和大小。 public struct controlRect { public int Left; public int Top; public int Width; public int Height; public float FontSize; public FontFamily FontFamily; } //(2).声明 1个对象 //注意这里不能使用控件列表记录 List nCtrl;,因为控件的关联性,记录的始终是当前的大小。 // public List oldCtrl= new List();//这里将西文的大于小于号都过滤掉了,只能改为中文的,使用中要改回西文 public List<controlRect> oldCtrl = new List<controlRect>(); int ctrlNo = 0;//1; //(3). 创建两个函数 //(3.1)记录窗体和其控件的初始位置和大小, public void

winform datagridview 绑定泛型集合变得不支持排序的解决方案

女生的网名这么多〃 提交于 2019-12-01 20:45:22
原文: winform datagridview 绑定泛型集合变得不支持排序的解决方案 案例:   环境:Winform程序   控件:Datagridview   现象:Datagridview控件绑定到List<T>泛型数据上不支持排序      Datagridview控件绑定到DataTable上可以支持排序   结论:泛型会使Datagridview失去排序特性   解决:实现BindingList<T>接口   实现代码:    1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Linq; 5 using System.Reflection; 6 using System.Text; 7 8 namespace HOET.Plugins.Orders.Model 9 { 10 /// <summary> 11 /// 泛型会失去DataTable特性,DataGridView绑定List<T>后不支持排序 12 /// </summary> 13 /// <typeparam name="T"></typeparam> 14 class SortableBindingList<T> : BindingList<T> 15 {

\"初识\".Net Winfom

依然范特西╮ 提交于 2019-12-01 20:35:36
  对于“初识”Winform中 初识这两个字的涵义,实际上之前我一直接触的是B/S方面的知识和开发,虽然说不上是熟练,但是大部分时间都是花在B/S上了,例如MVC,如今要从B/S转到C/S了,说实话心里有点落差,WinForm开发,UI层的界面相比较WebForm没有那么美观的展示层,开发效率、维护效率比WebForm低,但是每个都有自己的特点,我相信不管是C/S 还是 B/S 每个架构都有他自己存在的意义。 今天是我入职的第一天、第一天写博客,也是作为一名IT界菜鸟新人,不论今后怎么样,只希望自己能坚持自己的IT之路,在这条路上不断的提升自己,时刻保持进取之心,每一天都要比前一天进步有提升,时刻保持谦虚之心,对于不懂的问题要虚心请教,勇于提出问题,向我的刘经理谦虚学习!   最后是个人对Winform的理解:   WinForm即窗体应用程序,开发者只需要对Form窗体进行拖控件,组成一个窗体界面,并通过控件中的事件对控件进行代码编写,实现功能,但不同于WebForm的是,Winform是局域网的,WebForm是广域网,只需要一个浏览器就能访问并操作。   以上纯属个人理解,不喜勿喷。。。       来源: https://www.cnblogs.com/CkkCode/p/11717142.html

Winform实现多线程异步更新UI(进度及状态信息)

℡╲_俬逩灬. 提交于 2019-12-01 18:35:53
Winform实现多线程异步更新UI(进度及状态信息) 引言 在进行Winform程序开发需要进行大量的数据的读写操作的时候,往往会需要一定的时间,然在这个时间段里面,界面ui得不到更新,导致在用户看来界面处于假死的状态,造成了不好的用户体验。所以在大量数据操作的应用上,需要使用多线程来处理这种情况。在c#中使用多线程很方便只需要使用System.Threading.Thread的一个实例的Start方法就行了,但是如何实现多线程之间的交互就不是那么简单。本文实现了用子线程去处理数据,并实时更新主线程的ui状态了。下面就开始一步步的去实现异步线程更新ui的demo程序吧。 应用背景 写入一定量的数据到文本文件中,同时需要在主界面中反应出写入数据的实时进度情况。要求:需要将写入数据封装成一个类。 实现过程 1、首先建立一个winform项目,在主窗体上拖入一个button,一个progressbar,一个lable。如下图所示。 2、编写一个处理数据的类(WriteDate),源代码如下。 public class DataWrite { public delegate void UpdateUI(int step);//声明一个更新主线程的委托 public UpdateUI UpdateUIDelegate; public delegate void AccomplishTask

C#-WinForm跨线程修改UI界面

末鹿安然 提交于 2019-12-01 18:34:53
待解决的问题 在我做WinForm开发的过程中,经常会遇到耗时操作或阻塞操作。他们会引发软件的卡顿甚至假死,严重影响软件的使用。 因此,这类耗时或阻塞的操作一般都会使用异步的方式去执行,不影响主线程(UI线程)与用户间的交互。但多个线程竞争读写同一个资源往往会造成意想不到的意外结果,UI界面也是一种资源,所以跨线程修改UI界面往往被加以限制。 例如在Android 4.0之后,UI线程内不允许执行网络请求,网络请求需要配合着如AsyncTask之类的工具类来完成。 而在Winform中,跨线程修改UI界面同样是不被允许的。在子线程中修改界面控件时Visual Studio会报出如下错误: “System.InvalidOperationException”类型的异常在 System.Windows.Forms.dll 中发生,但未在用户代码中进行处理 其他信息: 线程间操作无效: 从不是创建控件“progressBar1”的线程访问它。 .Net提供了很多跨线程修改UI的方法,每种方法也有与之对应的工具类。我最常用的方法是Task + MethodInvoker的方式完成跨线程对UI对的修改(个人觉得这种方法写起来比较简洁)。 实例代码 界面设计 界面上只有一个按钮和一个进度条: 源代码 public partial class Form1 : Form { public

c# winform贪吃蛇小游戏

怎甘沉沦 提交于 2019-12-01 11:38:21
关于贪吃蛇需要用的对象: 1.蛇 (Snake)2.食物(Food) 3. 记录蛇身的位置(Snake_body[x,y]) 4 .食物位置Food[x,y] 简单业务: 1.蛇身移动 2.随机食物 3.蛇头与食物重叠 4.窗体检测上下左右方向,控制蛇身体移动方向 好了,废话不多说,开始:在页面拖入panle1,两个lable和button按钮,页面有点丑 ,关于页面位置的调整在Load实事件中调整, 首先定义成员变量,score 得分,每吃掉一次食物+1、 _Key_Name 初始蛇的移动方向(键盘)、_Snake_Body是蛇身数组、_Random产生随机数定义食物位置 #region 定义成员变量 /// <summary> /// 得分 /// </summary> private int score = 0; /// <summary> /// 键盘状态,初始为 start /// </summary> string _Key_Name = "Start"; /// <summary> /// 蛇身数组 /// </summary> Label[] _Snake_Body = new Label[3000]; /// <summary> /// 随机数生成Food /// </summary> Random _Random = new Random(); ///

WinForm程序打包教程

霸气de小男生 提交于 2019-12-01 10:02:08
准备工作 1. 编写完成的WinForm程序 2. 安装部署项 VS2010中有一个自带的安装部署项目,叫:Visual Studio Installer ,通常称为:setup项目,是一个用于自定义安装部署的项目方案。但是在VS2017、VS2019中均不见了,安装程序组件中也没有。So,下载链接: https://marketplace.visualstudio.com/items?itemName=VisualStudioClient.MicrosoftVisualStudio2017InstallerProjects 创建项目 Installer 安装完成后,在“解决方案”上右键,选择“添加”--“新建项目”,找到“其他项目类型”。按下图操作顺序执行 创建完成后: 添加项目输出文件 在“Application Folder”右击,选择“添加”--“项目输出” 在弹出的“添加项目输出组”页面选择WinFrom项目 添加内容文件 在中间部分右击,在弹出框中选择“添加”--“文件” 加入程序的依赖项 创建快捷方式 在“主输出 from WindowsFormsApp3 (Active)”选项右击选择“Create Shortcut to 主输出 from WindowsFormsApp3 (Active)”创建快捷方式,并重命名 将“快捷方式”拖放到“用户桌面”文件夹中,拖放之后

(八十五)c#Winform自定义控件-引用区块

醉酒当歌 提交于 2019-12-01 09:38:28
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章。 GitHub: https://github.com/kwwwvagaa/NetWinformControl 码云: https://gitee.com/kwwwvagaa/net_winform_custom_control.git 如果觉得写的还行,请点个 star 支持一下吧 欢迎前来交流探讨: 企鹅群568015492 来都来了,点个 【推荐】 再走吧,谢谢 NuGet Install-Package HZH_Controls 目录 https://www.cnblogs.com/bfyx/p/11364884.html 用处及效果 准备工作 没什么可准备的,直接往下看吧 开始 添加一个类UCPanelQuote继承 Panel 添加2个属性 1 /// <summary> 2 /// The border color 3 /// </summary> 4 private Color borderColor = LineColors.Light; 5 6 /// <summary> 7 /// Gets or sets the color of the border. 8 /// </summary> 9 /// <value>The color of the border.</value>