编辑
2025-09-19
C#
00

最近给客户做一个MES项目中,其中有一些表单打印需求,因为不能使用第三方的打印组件,刚开始想用excel套打,发现问题也不少,客户机可能不能安装excel,最后想来想去还不如自己draw一个表单打印得了。本文将详细介绍如何使用GDT+做一个表单打印,因为时间比较紧张,写的还不完善,够项目用了,也就一直没去完善了,估计不少项目上的兄弟都一样。。。

基本思路

将打印纸张切分为多行,多列,再根据行列索引定位。

比较麻烦的就是合并行或列,这里并没有真正的合并,而是通过FillRectangle来处理,算是讨巧了。

直接上代码

Table 绘制类

C#
using QRCoder; using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Reflection.Emit; using System.Text; using System.Threading.Tasks; using static System.Windows.Forms.AxHost;
编辑
2025-09-19
C#
00

在开发基于 WinForms 的应用程序时,采用 MVVM(模型-视图-视图模型)设计模式可以显著提高应用程序的可维护性和可扩展性。CommunityToolkit.Mvvm 是一个强大的库,它提供了一系列工具和功能,帮助开发者在 WinForms 应用中实现 MVVM 设计模式。本文将重点介绍如何在 WinForms 应用程序中使用 CommunityToolkit.Mvvm 定义简单的数据模型,并通过数据注解进行模型验证。

定义简单的数据模型

在 MVVM 设计模式中,模型(Model)代表应用程序的数据和业务逻辑。在 CommunityToolkit.Mvvm 中,我们通常通过创建 POCO(Plain Old CLR Object)类来定义模型,并利用 ObservableObject 类实现属性变更通知。

示例:定义一个 Person 模型

C#
using CommunityToolkit.Mvvm.ComponentModel; public partial class Person : ObservableObject { private string name; private int age; public string Name { get => name; set => SetProperty(ref name, value); } public int Age { get => age; set => SetProperty(ref age, value); } }
编辑
2025-09-19
C#
00

在复杂的 WinForms 应用程序中,视图(View)与视图模型(ViewModel)之间的通信是一个常见的需求。CommunityToolkit.Mvvm 提供了一个强大的消息机制,允许在不同组件之间进行松散耦合的通信。本文将通过详细的例子,展示如何在 WinForms 应用程序中使用这一消息机制。

消息机制概述

CommunityToolkit.Mvvm 的消息机制基于发布者/订阅者模式。一个组件(发布者)可以发送消息,而一个或多个组件(订阅者)可以接收并响应这些消息。这种机制允许视图模型之间,或视图模型与视图之间进行通信,而无需直接引用对方。

使用步骤

步骤 1:定义消息

首先,定义一个消息类。这个类可以包含任何你想传递的数据。例如,我们定义一个 UpdateMessage 类,用于通知接收者更新其内容。

C#
using CommunityToolkit.Mvvm.Messaging.Messages; public class UpdateMessage : ValueChangedMessage<string> { public UpdateMessage(string value) : base(value) { } }
编辑
2025-09-19
C#
00

本示例演示了在一个简单的 WinForms 应用程序中,如何使用 CommunityToolkit.Mvvm 的消息机制来实现视图和视图模型之间的通信。这个示例应用程序包含两个窗体:一个主窗体用于发送消息,另一个窗体用于接收并显示消息内容。

步骤 1:创建项目并安装必要的 NuGet 包

  1. 创建一个新的 WinForms 应用程序。
  2. 通过 NuGet 包管理器安装 CommunityToolkit.Mvvm 包。

步骤 2:定义消息

创建一个名为 User.cs 的用户类。

C#
public class User { public string Name { get; set; } public int Age { get; set; } public User(string name, int age) { Name = name; Age = age; } }
编辑
2025-09-19
C#
00

在许多应用场景中,能够实时检测USB设备的插入和移除对于提高用户体验和程序的响应性至关重要。本文将介绍如何在Windows环境下,使用C#编写一个简单的程序来监听USB设备的插入和移除事件。

前提条件

为了跟随本教程,您需要具备以下条件:

  • 基本的C#编程知识。
  • Visual Studio或其他C#开发环境。
  • Windows操作系统。

实现步骤