2025-10-03
C#
00

StackPanel是WPF中最简单和常用的布局控件之一,它可以将子元素按照水平或垂直方向依次排列。对于从WinForm转型到WPF的开发者来说,理解StackPanel的使用对掌握WPF布局系统至关重要。

StackPanel的主要特点

  • 可以设置水平或垂直方向的堆叠
  • 子元素按照添加顺序依次排列
  • 默认情况下会拉伸子元素以填充交叉轴方向的空间
  • 支持边距(Margin)和内边距(Padding)设置
  • 可以嵌套使用,实现复杂布局

基本用法示例

垂直方向排列(默认)

XML
<Window x:Class="AppStackPanel.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:AppStackPanel" mc:Ignorable="d" Title="MainWindow" Height="450" Width="800"> <!-- 垂直方向的StackPanel --> <StackPanel Margin="10"> <Button Content="按钮1" Height="30" Margin="0,0,0,5"/> <Button Content="按钮2" Height="30" Margin="0,0,0,5"/> <Button Content="按钮3" Height="30"/> </StackPanel> </Window>

image.png

2025-10-03
C#
00

在Winform中可以用Table控件实现,但说实话在Winform中的Table控件做的实在不好用,不少功能的逻辑实在不敢恭维。Grid(网格)是WPF中最灵活和最常用的布局控件之一。它允许我们将界面划分为行和列,形成类似表格的结构,可以精确控制元素的位置和大小。Grid非常适合创建复杂的用户界面布局。这个可以说是WPF功能最全的布局控件了,这个比Winform中的Table好用太多了。。。

Grid的基本属性

  • RowDefinitions: 定义行
  • ColumnDefinitions: 定义列
  • Grid.Row: 设置元素所在行
  • Grid.Column: 设置元素所在列
  • Grid.RowSpan: 设置元素跨越的行数
  • Grid.ColumnSpan: 设置元素跨越的列数

Grid的尺寸单位

Grid支持三种尺寸单位:

  1. 固定像素值(如 Width="100"
  2. 自动大小(Auto
  3. 比例大小(*
2025-10-03
C#
00

基本概念对比

WinForm布局

  • 采用绝对定位(固定坐标)
  • 基于像素的精确定位
  • 控件大小固定
  • 缺乏弹性布局能力
  • 主要依赖Location和Size属性

WPF布局

  • 采用相对定位
  • 基于设备独立单位(DPI)
  • 控件大小可自适应
  • 强大的弹性布局能力
  • 使用Margin、Padding等相对属性

布局容器对比

WinForm常用容器

C#
public partial class Form1 : Form { public Form1() { InitializeComponent(); // Panel作为容器 Panel panel = new Panel(); panel.Location = new Point(10, 10); panel.Size = new Size(200, 100); panel.BackColor=Color.Red; // GroupBox作为容器 GroupBox groupBox = new GroupBox(); groupBox.Location = new Point(10, 120); groupBox.Size = new Size(200, 100); groupBox.Text = "分组"; this.Controls.Add(panel); this.Controls.Add(groupBox); } }

image.png

2025-10-02
C#
00

什么是复制构造函数?

复制构造函数是C#中的一种特殊构造函数,用于创建一个对象的精确副本。它接受一个与当前类相同类型的对象作为参数,并复制该对象的属性和字段值到新创建的对象中。

复制构造函数的主要目的是:

  • 创建一个对象的深度副本
  • 避免直接引用原对象,从而防止意外修改

复制构造函数的语法

复制构造函数的基本语法如下:

C#
public class ClassName { public ClassName(ClassName other) { // 复制 other 对象的属性到新对象 } }
2025-10-02
C#
00

在日常使用Windows系统时,可能会遇到这样的需求:希望将一个特定的文件夹映射为一个虚拟驱动器号。这种功能对于某些软件的路径管理或提高访问效率非常有用。在本文中,我将介绍如何通过C#代码来实现这一功能,说到根上就是CMD调用 系统命令行,这应该是最简单的方法了。

使用subst命令

Windows提供了一种简单的方法来将文件夹映射为虚拟盘符,即使用subst命令。该命令将一个磁盘路径与指定的盘符关联,创建一个虚拟驱动器。

示例命令

PowerShell
subst Z: C:\Your\Folder\Path

上面的命令会将C:\Your\Folder\Path映射为Z:盘符。

使用C#代码实现

下面我们将通过C#代码实现上述功能。在C#中,可以利用System.Diagnostics.Process类来调用命令行。