c#软件开发学习笔记--Winform窗体(控件)

C# WinForm —— 07 Form窗体介绍 下面这个是文件名,当修改文件名时,窗体的 (Name)属性的值 和 代码页面的类名 都会随之修改。InitializeComponent()函数是窗体的初始化函数,里面主要定义了一些窗体和控件的属性,触发的事件/方法等,是 根据用户在属性里设置的内容 自动生成的当 窗体 在文件夹下面的时候,调用时,需要用 “文件夹名字.窗体” 阅读详情

WinForm 学习总结 - 第二十三天


一、登录功能与窗体切换

1.1 应用程序入口

namespace _01_登录
{
    internal static class Program
    {
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            
            LoginFrm loginFrm = new LoginFrm();
            
            // 使用 ShowDialog() 以模态方式显示登录窗体
            if (loginFrm.ShowDialog() == DialogResult.OK)
            {
                // 登录成功后显示主窗体
                Application.Run(new BankCustormerFrm("admin"));
            }
        }
    }
}

1.2 登录窗体实现

public partial class LoginFrm : Form
{
    public LoginFrm()
    {
        InitializeComponent();
    }

    private void btnLogin_Click(object sender, EventArgs e)
    {
        // 验证账号
        if (string.IsNullOrWhiteSpace(txtAccount.Text))
        {
            label3.Text = "账号不能为空白!";
            return;
        }

        // 验证密码
        if (string.IsNullOrWhiteSpace(txtPassword.Text))
        {
            MessageBox.Show("密码不能为空白!");
            return;
        }

        // 验证账号密码
        if (!(txtAccount.Text == "admin" && txtPassword.Text == "admin"))
        {
            MessageBox.Show("账号或密码出错,请重新输入!");
            return;
        }

        // 登录成功,设置返回结果
        DialogResult = DialogResult.OK;
    }
}

1.3 主窗体接收参数

public partial class BankCustormerFrm : Form
{
    public BankCustormerFrm(string value)
    {
        InitializeComponent();
        label1.Text = $"欢迎{value}进入";
    }
}

二、模态对话框与非模态对话框

2.1 概念对比

特性模态对话框 (ShowDialog())非模态对话框 (Show())
窗口层级独占顶层,阻止操作其他窗口与主窗口平级,可自由切换
关闭方式Close() 关闭并销毁Hide() 隐藏(仍存在)
返回值返回 DialogResult无返回值
典型场景登录框、确认框工具栏、属性面板

2.2 关闭应用程序的方式

// 1. 关闭当前窗口(非主窗口无法退出程序)
this.Close();

// 2. 退出所有窗体(无法处理非托管线程)
Application.Exit();

// 3. 退出调用线程上的所有消息
Application.ExitThread();

// 4. 最彻底的退出方式(强制退出所有线程)
System.Environment.Exit(0);

推荐做法:在主窗体的 FormClosed 事件中使用:

private void frmMain_FormClosed(object sender, FormClosedEventArgs e)
{
    if (tip != null)
    {
        tip.Dispose();
    }
    Dispose();
    System.Environment.Exit(0);
}

三、Controls 集合

3.1 遍历控件集合

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        
        // 遍历窗体上所有控件
        foreach (Control c in Controls)
        {
            Console.WriteLine(c);
            
            // 筛选特定类型控件
            if (c is Button)
            {
                Console.WriteLine(c.Text);
            }
        }
        
        // 通过索引访问控件
        Console.WriteLine(Controls[0]);
        Console.WriteLine(Controls[1]);
    }
}

四、消息提示框 (MessageBox)

4.1 基本用法

// 基本消息提示
MessageBox.Show("提示信息");

// 带标题
MessageBox.Show("提示信息", "窗口标题");

// 带按钮类型和图标
MessageBox.Show("提示信息", "窗口标题", 
    MessageBoxButtons.YesNo, 
    MessageBoxIcon.Stop, 
    MessageBoxDefaultButton.Button2);

4.2 MessageBoxButtons 枚举

枚举值按钮组合
OK确定
OKCancel确定、取消
YesNo是、否
YesNoCancel是、否、取消
RetryCancel重试、取消
AbortRetryIgnore中止、重试、忽略

4.3 MessageBoxIcon 枚举

枚举值图标样式
Information信息图标 (i)
Warning警告图标 (!)
Error错误图标 (X)
Question疑问图标 (?)
Asterisk信息图标
Exclamation警告图标
Hand错误图标
Stop错误图标

4.4 处理用户选择

DialogResult res = MessageBox.Show("确认删除吗", "删除", MessageBoxButtons.OKCancel);
if (res == DialogResult.OK)
{
    // 用户点击确定
    Controls.Remove(label1);
}

五、RadioButton 控件(单选框)

5.1 特性

  • 互斥性:同一容器内只能选择一个
  • Checked 属性:true 表示选中,false 表示未选中
  • CheckedChanged 事件:选中状态改变时触发

5.2 代码示例

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        // 创建Panel作为容器
        Panel p1 = new Panel();
        p1.BackColor = Color.Red;
        p1.Size = new Size(100, 100);
        p1.Location = new Point(330, 0);

        // 创建单选框
        RadioButton r1 = new RadioButton();
        r1.Text = "男";
        r1.Location = new Point(30, 10);
        p1.Controls.Add(r1);

        RadioButton r2 = new RadioButton();
        r2.Text = "女";
        r2.Location = new Point(30, 30);
        r2.Checked = true; // 默认选中
        p1.Controls.Add(r2);

        // 添加事件处理
        r1.CheckedChanged += Fanfan;
        r2.CheckedChanged += Fanfan;

        this.Controls.Add(p1);
    }

    public void Fanfan(object o, EventArgs e)
    {
        RadioButton r = o as RadioButton;
        if (r.Checked)
        {
            Console.WriteLine("选择了" + r.Text);
        }
    }
}

5.3 关键要点

  1. 互斥性:同一容器内的 RadioButton 自动互斥
  2. 分组:不同容器(Panel/GroupBox)中的 RadioButton 互不影响
  3. 事件:CheckedChanged 在选中状态改变时触发

六、CheckBox 控件(复选框)

6.1 特性

  • 独立选择:每个 CheckBox 独立,不互斥
  • Checked 属性:true 表示勾选,false 表示未勾选
  • CheckedChanged 事件:勾选状态改变时触发

6.2 代码示例

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        
        // 动态创建 CheckBox
        CheckBox c1 = new CheckBox()
        {
            Text = "new出来的多选框",
            Location = new Point(180, 100),
            Checked = true, // 默认勾选
        };
        Controls.Add(c1);

        // 绑定事件
        checkBox2.CheckedChanged += checkBox1_CheckedChanged;
        checkBox3.CheckedChanged += checkBox1_CheckedChanged;
        c1.CheckedChanged += checkBox1_CheckedChanged;
    }

    private void checkBox1_CheckedChanged(object sender, EventArgs e)
    {
        CheckBox c = (CheckBox)sender;
        if (c.Checked)
        {
            Console.WriteLine(c.Text);
        }
    }
}

七、ListBox 控件(列表框)

7.1 选择模式

SelectionMode说明
None不可选择
One单选(默认)
MultiSimple多选(点击切换)
MultiExtended多选(支持 Ctrl/Shift)

7.2 代码示例

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        // 添加项
        listBox1.Items.Add("罗志祥");
        listBox1.Items.Add("李云迪");
        listBox1.Items.Add("蔡徐坤");

        // 动态创建 ListBox
        ListBox listBox = new ListBox();
        listBox.Location = new Point(100, 20);
        listBox.Size = new Size(100, 180);
        Controls.Add(listBox);

        // 批量添加
        string[] strings = new string[] { "111", "222", "333" };
        listBox.Items.AddRange(strings);

        // 设置多选模式
        listBox.SelectionMode = SelectionMode.MultiSimple;

        // 绑定事件
        listBox.SelectedIndexChanged += Xuanzhong;
    }

    public static void Xuanzhong(object sender, EventArgs e)
    {
        ListBox l1 = sender as ListBox;
        
        // 单选:获取选中项
        // Console.WriteLine(l1.SelectedItem);
        // Console.WriteLine(l1.SelectedIndex);

        // 多选:遍历所有选中项
        string ss = string.Empty;
        foreach (var item in l1.SelectedItems)
        {
            ss += item;
        }
        Console.WriteLine(ss);
    }
}

八、ComboBox 控件(下拉框)

8.1 特性

  • 结合文本框和列表框功能
  • 支持输入和选择
  • DropDownStyle 属性控制行为

8.2 代码示例

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        
        // 动态创建 ComboBox
        ComboBox cb = new ComboBox();
        cb.Size = new Size(60, 30);
        cb.Location = new Point(100, 100);
        Controls.Add(cb);

        // 添加项
        cb.Items.AddRange(new string[] { "吴亦凡", "罗志祥" });

        // 绑定事件
        cb.SelectedIndexChanged += Gaibian;
    }

    public static void Gaibian(object sender, EventArgs e)
    {
        ComboBox cb = sender as ComboBox;
        Console.WriteLine(cb.SelectedItem);   // 获取选中项
        Console.WriteLine(cb.SelectedIndex);  // 获取选中索引
    }
}

九、NumericUpDown 控件(数字输入框)

9.1 主要属性

属性说明
Value当前数值(decimal 类型)
Minimum最小值
Maximum最大值
Increment增减步长
DecimalPlaces小数位数
ThousandsSeparator是否显示千位分隔符

9.2 代码示例

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        
        NumericUpDown num = new NumericUpDown();
        num.Value = 10;           // 初始值
        num.Minimum = 0;          // 最小值
        num.Maximum = 100;        // 最大值
        num.Increment = 2;        // 步长
        num.DecimalPlaces = 0;    // 小数位数

        Controls.Add(num);

        // 绑定值改变事件
        num.ValueChanged += new EventHandler(numValueChanged);
    }

    private void numValueChanged(object sender, EventArgs e)
    {
        NumericUpDown num = (NumericUpDown)sender;
        MessageBox.Show("当前的值是: " + num.Value.ToString());
    }
}

十、PictureBox 控件(图片框)

10.1 图片加载方式

// 方式1:从文件加载
pictureBox.Image = Image.FromFile(@"C:\Images\0001.PNG");

// 方式2:设置图片路径
pictureBox.ImageLocation = @"C:\Images\0001.PNG";

// 方式3:从资源加载
pictureBox.Image = Properties.Resources.background;

10.2 SizeMode 属性

SizeMode说明
Normal图片位于左上角,超出部分被剪切
StretchImage拉伸图片以适应控件(可能失真)
Zoom保持比例缩放,完整显示
AutoSize控件根据图片自动调整大小
CenterImage图片居中显示,超出部分被剪切

10.3 代码示例

pictureBox1.Size = new Size(200, 150);
pictureBox1.Location = new Point(10, 10);
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
pictureBox1.Image = Image.FromFile(@"C:\Images\0001.PNG");

// 点击事件
pictureBox1.Click += (sender, e) => 
{
    MessageBox.Show("图片被点击了!");
};

十一、ImageList 组件

11.1 特性

  • 存储和管理多个图像
  • 供其他控件共享使用(如 ListView、TreeView)
  • 减少内存占用

11.2 轮播图示例

public partial class Form1 : Form
{
    int index = 0;

    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        // 显示第一张图
        pictureBox1.Image = imageList1.Images[index];
    }

    private void button1_Click(object sender, EventArgs e)
    {
        // 切换到下一张
        index++;
        if (index >= imageList1.Images.Count)
        {
            index = 0;
        }
        pictureBox1.Image = imageList1.Images[index];
    }
}

十二、核心概念总结

12.1 窗体生命周期

构造函数 → Load事件 → 显示 → 用户交互 → FormClosing → 关闭

12.2 事件处理模式

// 方式1:设计器绑定
private void button1_Click(object sender, EventArgs e) { }

// 方式2:代码绑定(Lambda)
btn.Click += (sender, e) => { MessageBox.Show("点击"); };

// 方式3:代码绑定(方法引用)
btn.Click += button1_Click;

// 移除事件
btn.Click -= button1_Click;

12.3 控件创建方式

// 方式1:设计器拖放(可视化)
// 方式2:代码动态创建
Control control = new ControlType();
control.Property = value;
this.Controls.Add(control);

十三、实用技巧

  1. 控件访问:通过 Name 属性或 Controls 集合访问控件
  2. 类型转换:使用 as 关键字安全转换 sender 对象
  3. 资源管理:使用 Properties.Resources 管理项目资源
  4. 线程安全:UI 更新应在 UI 线程执行,使用 Control.Invoke
  5. 内存优化:使用 ImageList 共享图像资源

十四、使用场景

  1. 模态对话框用于需要用户确认的操作(如登录、确认删除)
  2. 非模态对话框用于辅助功能(如工具栏、搜索框)
  3. Controls 集合用于批量操作或动态控件管理
  4. 消息提示应适度使用,避免频繁弹窗影响用户体验
  5. 单选框分组使用 Panel 或 GroupBox 容器
  6. 图片显示根据需求选择合适的 SizeMode
Winform 窗体控件使用1 RadioButton 单选按钮 一组单选按钮中,只能选中其中一个,互相排斥属性:Name 名称 Text 文本 Checked 是否选中AutoCheck 自动更改其他RadioButton的选中状态 true事件:CheckedChanged 选中状态改变时发生只能选中一项的情况:角色选择登录,性别选择CheckBox 复选框一组复选框中,可以选择多个项。Name 名称 Text 文本 Checked 选中状态。 阅读详情

相关推荐

C# 遍历控件,遍历某EXE中的所有窗体以及窗体上的控件

大家好,我是赤道上的小熊,最近在做一个二开设计平台,要实现遍历某EXE中的所有窗体以及窗体上的控件,下面的实现方式不仅可以找到窗体中已经存在的控件,通过程序动态创建的控件也可以遍历到(例如:Button button2 = new Button()),希望对大家所有帮助。 PS:该实现方式必须和要寻找的窗体在同一项目中 //获取EXE中的控件值 string strRes ...

aixiaoxiong的博客 1944

VisualStudio — Release 模式下进行调试

如果需要在调试过程中,查看各种变量的信息,就需要禁用优化项,否则在单步调试时很多变量的信息被优化掉无法查看。C/C++ -> 常规 -> 调试信息格式 设为:用于“编辑并继续”的程序数据库 (/ZI)链接器 -> 调试 -> 生成调试信息 设置为: 生成调试信息 (/DEBUG)C/C++ -> 优化 -> 优化 设为: 禁用优化。调试信息的符号文件 .pdb 是调试时的必须文件。

Justinyh的博客 1022

C# winform 实现(不规则)窗体或者控件的拖动

方法一: 窗体或者控件的拖动   private Point m_MousePoint;    private Point m_LastPoint;   protected override void OnMouseDown(MouseEventArgs e)    {      base.OnMouseDown(e);      this.m_LastPoint = this.Loc

友情提示:此人正在游戏中...... 4376

C#学习笔记——WinForm入门篇

本文系统介绍了WinForm开发的核心知识点,包括窗体基础、常用组件和数据绑定技术。主要内容涵盖:1. WinForm项目创建流程和窗体结构解析;2. 常用控件如Button、TextBox、ComboBox等的属性和事件处理;3. 高级数据展示组件ListView和DataGridView的详细使用方法;4. 数据绑定、布局管理和性能优化技巧。文章通过代码示例和实际案例,帮助开发者掌握WinForm应用程序的开发流程和技术要点,为构建功能完善的桌面应用提供实用指导。

2301_76677260的博客 3547

Winform中实现窗体控件适配(自适应窗体)布局_通过C#代码方式

至此通过使用C#代码实现窗体控件适配(自适应窗体)布局下过完成,运行项目即可查看效果。③在窗体变化时获取当前窗体的宽度和高度,然后遍历窗体控件进行设置。①在窗体初始化时先获取窗体的宽度和高度,然后;②遍历窗体控件进行初始化设置缩放位置;......

提供C#相关开发 、云计算、运维测试、网络安全相关技术分享与服务,有意向可联系。 2万+

C# WinForm窗体及控件自适应设计指南

本文还有配套的精品资源,点击获取 简介:在C#编程中,WinForm用于创建桌面应用程序,包含丰富的GUI元素。本文详细讲解了如何实现WinForm窗体及其控件的自适应布局,以适应不同分辨率和屏幕尺寸。介绍了使用百分比定位、调整大小事件、anchoring和docking、TableLayoutPanel和FlowLayoutPanel容器控件、响应式设计以及AutoSiz...

weixin_42515842的博客 3602

C#窗体程序winform新手学习笔记(一)

**做个小项目** 以一个非常简单的程序为示例:两个按钮,用鼠标点击香蕉则弹窗“你更喜欢香蕉!”,点击苹果则弹窗“你更喜欢苹果!” 解决办法:

这个人好有趣....hh 1737

C# 窗体(WInform)界面开发大全

C#界面设计典例,WInform界面开发系列的介绍,主要针对性介绍Winform开发过程中,经常用到的模块:数据字典模块、参数配置模块、权限管理模块的模块化应用,以及各模块的分合之道。

C#编程-Winform基础和ADO.NET

一、

qq_45085522的博客 478

告别Keil/IAR:在VSCode中用CMake+Clangd打造丝滑的STM32开发环境(附完整配置)

本文详细介绍了如何在VSCode中使用CMake和Clangd搭建高效的STM32开发环境,替代传统的Keil/IAR工具。通过完整的配置指南和快速开发技巧,帮助开发者实现轻量级、高度可定制的现代化开发流程,显著提升STM32项目的开发效率。

weixin_26843605的博客 164

学习笔记之——Event Camera(事件相机)调研

概述 Event Camera是一种bio-inspired sensor,对应的领域为bio-inspired vision。对于传统的相机,从某种程度上,是捕获一个静态/静止的空间,而Event Camera的目的是:敏感地捕捉运动的物体。 对于传统RGB-camera,相机传回的信息是同步的,所谓同步,就是在某一时刻t,相机会进行曝光,把这一时刻所有的像素填在一个矩阵里回传,一张照片就诞生了。一张照片上所有的像素都对应着同一时刻。至于视频,不过是很多帧的图片,相邻图片间的时间间隔...

gwpscut的博客 3万+

C# Windows Forms开发实战:窗体与控件全解析,从入门到精通

​创建用户控件右键项目 → 添加 → 用户控件(.cs)。拖放控件并添加逻辑。csharp​扩展现有控件csharpif (!通过系统学习窗体属性、控件使用、布局管理、事件处理及数据绑定,开发者能够构建功能丰富、用户友好的 Windows 应用程序。结合自定义控件和高级技术,可进一步提升界面体验和功能性。建议通过实际项目练习,加深对各个知识点的掌握。

Rocn666的博客 3427

开箱即用的Platform IO开发平台(包括Arduino,ESP8266,ESP32,STM32)

开箱即用的 Platform IO 离线开发环境,包含(ESP32,ESP32S2,ESP8266,Arduino,STM32)

qq_19703307的博客 755

c#软件开发学习笔记--winform窗体(窗体、事件、常用控件)

/ 定义委托// 定义事件// 绑定事件处理MessageBox.Show(a + " 触发事件");// 触发事件。

Z599817841的博客 235

用 CDS View I_APARToleranceGroup 管理客户与供应商收付差异容差:配置语义、字段解读与 ABAP 落地实践

财务共享服务中心常面临小额差异处理的挑战,SAP通过"客户/供应商容差组"机制实现自动清账规则配置。CDS视图I_APARToleranceGroup将配置数据转化为可查询维度,包含宽限天数、固定现金折扣等关键业务参数。该视图支持按公司代码和容差组查询差异处理策略,可用于报表开发、主数据校验和接口合规检查,帮助财务团队高效管理海量小额交易差异,减少手工操作。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 127

YOLOv8改进策略【损失函数篇】| 替换Powerful-IoU(PIoU),增强对中等质量锚框的关注力,引导锚框更直接、高效地回归

现有基于IoU的损失函数存在不合理的惩罚因子,导致锚框在回归过程中出现面积扩大的问题,使得回归效率降低、收敛速度变慢。同时,这些损失函数在反映锚框与目标框之间的差异、考虑目标框大小以及某些情况下的性能表现等方面存在局限性。在目标检测任务中,边界框回归的损失函数对检测性能至关重要。Powerful-IoU(PIoU)及其升级版PIoU v2正是为解决现有损失函数存在的问题而设计的。本文利用PIoU改进YOLOv8的损失函数,提高模型精度。

Limiiiing的博客 672

C#+Winform开发窗体程序

学习笔记 第一章:winform基础 一、概述 1、Windows Form(简称WinForm) 是微软.NET平台下用于开发"图形界面"应用程序的组件。 2、C/S架构 客户机(Client)/服务器(Server),是软件系统体系结构。 通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统...

weixin_30667301的博客 3530

FastAPI基础项目:仿头条新闻的web项目,实现基本的新闻列表页和详情页查看功能

该项目是一个基于FastAPI和MySQL的新闻应用入门项目。主要包含新闻列表页和详情页两个功能页面。项目结构清晰,包含主应用文件、数据库脚本和HTML模板。使用SQLAlchemy进行数据库操作,通过脚本可自动生成50条示例新闻数据。环境配置简单,仅需安装FastAPI、MySQL驱动等基础依赖,通过.env文件管理数据库连接。该项目适合作为FastAPI+MySQL的入门学习案例,展示了基本的CRUD操作、分页查询和模板渲染功能。

数据知道的博客 4424

C# winform窗体及其控件的自适应

为了提升用户的体验,窗体不能再固定其大小(用户不能随意改变窗体的大小),所以要做到窗体适应电脑屏幕的分辨率,窗体中的控件要跟随窗体的变化比例而变化。 通过网上查找学习,发现有几个位大佬的方法不错,所以把他们的代码加到自己的工程中测试了一下,发下尽管能实现比例变化的功能,但是还是有时候会有控件错位(下面的方法一),页面加载较慢等问题。在没寻找到更好的方法下,先把这两种方法...

zwb_578209160的博客 5682

【二】MADDPG多智能体算法实现(parl)【追逐游戏复现】

论文全称:Multi-Agent Actor-Critic for Mixed Cooperative-Competitive Environments 论文原文:https://download.youkuaiyun.com/download/sinat_39620217/16203960 论文翻译:https://blog.youkuaiyun.com/qiusuoxiaozi/article/details/79066612 ...

丨汀、的博客 2万+

【产品经理修炼之道】- 优惠券系统从入门到精通(二)

在电商平台中,优惠券的使用场景与频次都很高。那么如何做好一个优惠券系统呢?本文总结了相关流程和设计思路,希望对你有所帮助。上一篇与大家分享了架构中的前端应用、生命周期、优惠券管理中OpenAPI 、基础系统,今天继续与大家分享架构图中优惠券模板部分。

xiaoli8748的专栏 1290

C# winform 控件随窗体放大缩小

前言: 当winform的窗体放大缩小时,希望窗体内的控件可以随着窗体的放大缩小,等比例的也随之改变,一般的想法是根据窗体的改变比例,将控件也等比例放大缩小,这个方法理论上应该可行,但是按比例计算会有精度损失差值,这个随着放大缩小的次数,控件也会发生偏移性改变。我个人认为比较可行的是按整形计算的方式,这样便不会有精度损失差值的问题。 思路: 当窗体放大或缩小后,求得窗体放大或缩小的差值N,将N与需要发生放大缩小的控件进行模运算,抛掉余数,然后给各个控件分配可平均的放大缩小数额。 截图: 放大前:.

weixin_39399921的博客 8469

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

C#里WinForm开发中如何实现控件随窗体大小的改变而自动适应其改变

参考文章: 1 http://www.crifan.com/csharp_control_size_auto_changed_with_winform_size_changed/ 2 http://01258.blog.51cto.com/2229941/565420 C#里WinForm开发中如何实现控件随窗体大小的改变而自动适应其改变 在设计可供用户调整大小

victory_nj的博客 4万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Skin控件 C# Winform窗体美化控件

Skin控件 C# Winform窗体美化控件     c# 程序皮肤控件2008-09-12 16:16Visual Studio 2005工具箱上右击选择“选择项”,慢慢等...在弹出的“选择工具箱项”选项卡中,点击“浏览”,找到IrisSkin2.dll存放的位置,双击,你会发现多了个“SkinEngine”,确定。将公共控件里的“SkinEngine”,拖到窗体上,将皮肤文件*.

一米阳光的专栏 4632

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

C# Winform 多窗体切换方式二

在 Winform 开发中,多窗体的切换是一个常见的需求,比如登录成功后,切换至主界面,同时关闭登录界面,看似简单的需求,如果在别的框架里是很容易实现的,在 Winform 你如果按同样的逻辑写 this.Close();你就会发现软件直接闪退了,因为 Winform 存在一个主线程概念,如果主线程关闭,那么当前软件所有的窗体都会随之关闭,这时你就会去查相关的资料,你会发现有的用的 form2.Show();这种方式,这种方式其实也不是特别好,切换一两个窗体还好,如果窗体太多了,那代码就非常的难看。

熊思雨的博客 4079

c# winform 用属性方法实现子窗体修改父窗体控件的值

c# winform 用属性方法实现子窗体修改父窗体控件的值 主窗口:lable名:labelFather… 子窗口:lable名:labelChild From1.cs using System; using System.Windows.Forms; namespace WindowsFormsApplication2 { public delegate void Mydelegat...

weihldlfu的博客 3656
上一篇: c#软件开发学习笔记--winform窗体(窗体、事件、常用控件)
下一篇: c#软件开发学习笔记--Winform窗体(Stream、File、Directory、Path)
Z599817841
博客等级 码龄4年 12粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值