当前位置: 首页 > article >正文

技术周总结 09.09~09.15周日(C# WPF WinForm)

文章目录

  • 一、09.09 周一
    • 1.1) 问题01: Windows桌面开发中,WPF和WinForm的区别和联系?
      • 联系:
      • 区别:
  • 二、09.12 周四
    • 2.1)问题01:visual studio的相关快捷键有哪些?
      • 通用快捷键
      • 编辑
      • 导航
      • 调试
      • 窗口管理
    • 2.2)问题02: public partial class ChoosePLReason : CommonBaseForm
    • 2.3)问题03:介绍Windows Forms中的 System.Windows.Forms.DataGridViewRowCollection
      • 常用属性:
      • 常用方法:
      • 示例代码
    • 2.4) 问题04: 介绍下 C#中的 `DataGridView` 控件
      • 主要特性
      • 基本用法
      • 注意事项
    • 2.5)问题05:Windows 窗体应用程序 中有哪些常见的概念,类和控件等
      • 常见概念
      • 常见类
      • 常见控件
      • 事件
      • 布局控件
    • 2.6) 问题06:WPF 中有哪些常见的概念,类和控件等
      • 常见概念
      • 常见类
      • 常见控件
      • 数据绑定相关类
      • 资源和样式相关类
  • 三、09.13 周五
    • 3.1)问题01: git怎么查询本地有哪些 commit没有 push到远端?

一、09.09 周一

1.1) 问题01: Windows桌面开发中,WPF和WinForm的区别和联系?

WPF (Windows Presentation Foundation) 和 WinForms (Windows Forms) 都是用于开发Windows桌面应用程序的技术栈,但是它们之间存在一些重要的区别和联系:

联系:

  • 目标平台:两者都是.NET框架的一部分,旨在为开发者提供创建图形用户界面(GUI)的方式。
  • 编程语言:都可以使用C#或者VB.NET等.NET支持的语言进行开发。
  • IDE支持:Visual Studio提供了对这两种技术的集成设计支持。

区别:

  • 显示技术:WPF使用矢量图形和DirectX进行渲染,而WinForms则依赖于GDI+(Graphics Device Interface Plus)。这意味着WPF可以提供更高质量的图像,并且更容易处理复杂的视觉效果。
  • XAML:WPF引入了XAML(可扩展应用程序标记语言),这是一种XML衍生的语言,用来定义和链接用户界面及其组件。WinForms使用的是基于二进制的形式来保存窗体布局。
  • 数据绑定:虽然两者都支持数据绑定,但是WPF的数据绑定机制更为强大,支持双向绑定,以及更复杂的绑定表达式。
  • 动画与媒体:WPF内置了对动画、音频和视频的强大支持,而这些在WinForms中需要额外的工作才能实现。
  • 灵活性:WPF允许开发者创建高度定制化的控件,提供了更灵活的布局模型,而WinForms在这方面相对较为传统和固定。
  • 多平台支持:WPF最初仅限于Windows平台,但随着.NET Core和.NET 5及更高版本的发展,WPF也获得了跨平台的能力。WinForms同样受益于.NET Core的跨平台特性,但其主要设计目标仍然是Windows操作系统。

总的来说,WPF是一个更为现代的选择,尤其是在需要复杂UI设计的应用程序中。WinForms则因其简单易用,在构建基本的业务应用程序方面仍然非常受欢迎。选择哪一个取决于具体项目的需求和个人偏好。

二、09.12 周四

2.1)问题01:visual studio的相关快捷键有哪些?

Visual Studio 是一个功能强大的集成开发环境 (IDE),提供了许多快捷键来提高开发效率。以下是一些常用的快捷键:

通用快捷键

  • Ctrl + Shift + N: 新建项目
  • Ctrl + O: 打开文件
  • Ctrl + S: 保存文件
  • Ctrl + Shift + S: 全部保存
  • Ctrl + P: 打印
  • Ctrl + Z: 撤销
  • Ctrl + Y: 重做
  • Ctrl + X: 剪切
  • Ctrl + C: 复制
  • Ctrl + V: 粘贴
  • Ctrl + A: 全选
  • Ctrl + F: 查找
  • Ctrl + H: 替换
  • Ctrl + Shift + F: 全局查找
  • Ctrl + Shift + H: 全局替换

编辑

  • Ctrl + K, Ctrl + C: 注释选中代码
  • Ctrl + K, Ctrl + U: 取消注释选中代码
  • Ctrl + K, Ctrl + D: 格式化文档
  • Ctrl + K, Ctrl + F: 格式化选中代码
  • Ctrl + Space: 触发 IntelliSense
  • Ctrl + .: 快速修复(显示快速操作)

导航

  • Ctrl + T: 转到所有(文件、类型、成员等)
  • Ctrl + ,: 快速查找文件
  • F12: 转到定义
  • Alt + F12: 查看定义
  • Ctrl + -: 向后导航
  • Ctrl + Shift + -: 向前导航

调试

  • F5: 启动调试
  • Shift + F5: 停止调试
  • F9: 切换断点
  • F10: 逐过程
  • F11: 逐语句
  • Shift + F11: 退出当前函数

窗口管理

  • Ctrl + Alt + L: 打开解决方案资源管理器
  • Ctrl + Alt + O: 打开输出窗口
  • Ctrl + , Ctrl + M: 打开错误列表
  • Ctrl + Alt + X: 打开工具箱

这些快捷键可以帮助你更高效地使用 Visual Studio。你可以在 Visual Studio 中自定义快捷键,以适应你的工作习惯。

2.2)问题02: public partial class ChoosePLReason : CommonBaseForm

在C#中,partial关键字允许将一个类、结构或接口的定义分割成多个文件。每个文件都包含该类、结构或接口的一部分定义,最终在编译时所有部分会被组合成一个完整的定义。这在大型项目中非常有用,因为它允许多个开发人员同时编辑同一个类而不会产生冲突。

下面是一个关于partial类的简单示例:

文件1:ChoosePLReason_Part1.cs

public partial class ChoosePLReason : CommonBaseForm
{
    public void Method1()
    {
        Console.WriteLine("Method1 in Part1");
    }
}

文件2:ChoosePLReason_Part2.cs

public partial class ChoosePLReason : CommonBaseForm
{
    public void Method2()
    {
        Console.WriteLine("Method2 in Part2");
    }
}

在编译时,这两个文件会被组合成一个完整的ChoosePLReason类,包含Method1Method2方法。

你可以在任何一个部分中定义构造函数、属性、方法等,并且这些部分共享同一个类的成员。

需要注意的是:

  1. 所有部分必须使用partial关键字。
  2. 所有部分必须在同一个命名空间中。
  3. 所有部分组合起来必须形成一个有效的类定义。

2.3)问题03:介绍Windows Forms中的 System.Windows.Forms.DataGridViewRowCollection

System.Windows.Forms.DataGridViewRowCollection 是 Windows Forms 中 DataGridView 控件的一部分,用于表示 DataGridView 控件中的所有行的集合。DataGridView 是一个非常强大的控件,可以用来显示和管理数据表格。

以下是一些常用的 DataGridViewRowCollection 方法和属性:

常用属性:

  • Count: 获取集合中实际包含的元素数。
  • Item[Int32 index]: 获取或设置指定索引处的行。

常用方法:

  • Add(): 添加一行到 DataGridView
  • Add(Object[] values): 使用指定的值添加一行到 DataGridView
  • Clear(): 从集合中删除所有行。
  • Contains(DataGridViewRow dataGridViewRow): 确定指定的行是否在集合中。
  • Remove(DataGridViewRow dataGridViewRow): 从集合中移除指定的行。
  • RemoveAt(Int32 index): 移除指定索引处的行。

示例代码

以下是一个简单的示例,展示如何使用 DataGridViewRowCollectionDataGridView 中添加和移除行:

using System;
using System.Windows.Forms;

public class DataGridViewExample : Form
{
    private DataGridView dataGridView;

    public DataGridViewExample()
    {
        dataGridView = new DataGridView
        {
            Dock = DockStyle.Fill,
            ColumnCount = 3
        };

        // 添加列标题
        dataGridView.Columns[0].Name = "ID";
        dataGridView.Columns[1].Name = "Name";
        dataGridView.Columns[2].Name = "Age";

        // 添加行
        string[] row1 = new string[] { "1", "John Doe", "30" };
        string[] row2 = new string[] { "2", "Jane Smith", "40" };

        dataGridView.Rows.Add(row1);
        dataGridView.Rows.Add(row2);

        // 移除第一行
        dataGridView.Rows.RemoveAt(0);

        Controls.Add(dataGridView);
    }

    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.Run(new DataGridViewExample());
    }
}

这个示例创建了一个包含三列的 DataGridView,然后添加了两行数据,并移除了第一行。DataGridView 控件被添加到窗体中并显示。

2.4) 问题04: 介绍下 C#中的 DataGridView 控件

DataGridView 是 C# 中用于显示和编辑表格数据的控件,通常用于 Windows 窗体应用程序中。它功能强大且灵活,能够处理大量数据,并提供多种自定义和扩展选项。以下是 DataGridView 控件的一些主要特性和使用方法:

主要特性

  1. 数据绑定DataGridView 可以绑定到多种数据源,如 DataTableBindingSourceList<T> 等。
  2. 列类型:支持多种列类型,包括文本框列(DataGridViewTextBoxColumn)、复选框列(DataGridViewCheckBoxColumn)、按钮列(DataGridViewButtonColumn)等。
  3. 排序和过滤:支持对数据进行排序和过滤,用户可以通过点击列头来排序数据。
  4. 自定义外观:可以自定义单元格、行、列和整个控件的外观,包括颜色、字体和边框样式等。
  5. 事件处理:提供了丰富的事件,如 CellClickCellValueChangedRowEnter 等,以便处理用户交互。
  6. 编辑和验证:支持单元格和行的编辑,并提供了数据验证功能。

基本用法

以下是一个简单的示例,展示了如何在 Windows 窗体应用程序中使用 DataGridView 控件:

using System;
using System.Data;
using System.Windows.Forms;

public class DataGridViewExample : Form
{
    private DataGridView dataGridView;

    public DataGridViewExample()
    {
        InitializeComponent();
    }

    private void InitializeComponent()
    {
        this.dataGridView = new DataGridView();
        this.SuspendLayout();

        // 设置 DataGridView 属性
        this.dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
        this.dataGridView.Location = new System.Drawing.Point(13, 13);
        this.dataGridView.Name = "dataGridView";
        this.dataGridView.Size = new System.Drawing.Size(600, 400);
        this.dataGridView.TabIndex = 0;

        // 添加 DataGridView 到窗体
        this.Controls.Add(this.dataGridView);

        // 窗体属性
        this.ClientSize = new System.Drawing.Size(800, 450);
        this.Name = "DataGridViewExample";
        this.Text = "DataGridView 示例";
        this.Load += new System.EventHandler(this.DataGridViewExample_Load);
        this.ResumeLayout(false);
    }

    private void DataGridViewExample_Load(object sender, EventArgs e)
    {
        // 创建 DataTable 并添加数据
        DataTable table = new DataTable();
        table.Columns.Add("ID", typeof(int));
        table.Columns.Add("Name", typeof(string));
        table.Columns.Add("Age", typeof(int));

        table.Rows.Add(1, "Alice", 30);
        table.Rows.Add(2, "Bob", 25);
        table.Rows.Add(3, "Charlie", 35);

        // 将 DataTable 绑定到 DataGridView
        this.dataGridView.DataSource = table;
    }

    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new DataGridViewExample());
    }
}

注意事项

  1. 性能:对于大量数据,可以考虑使用虚拟模式(VirtualMode)来提高性能。
  2. 数据验证:在处理用户输入时,确保进行适当的数据验证,以防止无效数据的输入。
  3. 自定义:可以通过继承 DataGridView 或其列类型,来实现更复杂的自定义行为和外观。

DataGridView 是一个非常强大的控件,通过合理使用其各种特性,可以满足大多数表格数据展示和编辑的需求。

2.5)问题05:Windows 窗体应用程序 中有哪些常见的概念,类和控件等

在Windows窗体应用程序(Windows Forms Application)中,有许多常见的概念、类和控件。以下是一些关键的部分:

常见概念

  1. 事件驱动编程:Windows Forms 应用程序主要基于事件驱动的编程模型,用户的操作(如点击按钮、输入文本等)会触发事件,应用程序会对这些事件作出响应。

  2. 控件(Control):控件是构成用户界面的基本元素,如按钮、文本框等。

  3. 窗体(Form):窗体是应用程序的基本容器,可以包含各种控件。

常见类

  1. Form:表示一个窗体,是所有窗体类的基类。

  2. Application:提供方法来启动和停止应用程序、处理消息循环等。

  3. Control:所有控件的基类,提供了所有控件的基本属性和方法。

  4. Button:表示一个按钮控件。

  5. TextBox:表示一个文本框控件,允许用户输入文本。

  6. Label:表示一个标签控件,用于显示文本。

  7. DataGridView:表示一个数据网格控件,用于显示和编辑表格式数据。

  8. ComboBox:表示一个组合框控件,允许用户从下拉列表中选择一个选项。

  9. ListBox:表示一个列表框控件,允许用户选择一个或多个选项。

  10. CheckBox:表示一个复选框控件,允许用户选择或取消选择。

  11. RadioButton:表示一个单选按钮控件,通常与其他单选按钮一起使用,允许用户选择一个选项。

常见控件

  1. Button:按钮,用户点击以触发操作。

  2. Label:标签,用于显示文本或说明。

  3. TextBox:文本框,用户可以在其中输入文本。

  4. ComboBox:组合框,提供下拉列表供用户选择。

  5. ListBox:列表框,显示一组项供用户选择。

  6. CheckBox:复选框,用户可以选中或取消选中。

  7. RadioButton:单选按钮,用户可以选择一个选项。

  8. PictureBox:图片框,用于显示图像。

  9. ProgressBar:进度条,用于显示操作的进度。

  10. TabControl:选项卡控件,允许在多个选项卡之间切换。

事件

  1. Click:当用户点击控件时触发的事件。

  2. TextChanged:当控件的文本内容发生变化时触发的事件。

  3. Load:当窗体加载时触发的事件。

  4. FormClosing:当窗体即将关闭时触发的事件。

  5. MouseEnter:当鼠标指针进入控件时触发的事件。

  6. MouseLeave:当鼠标指针离开控件时触发的事件。

布局控件

  1. FlowLayoutPanel:流布局面板,控件按顺序排列。

  2. TableLayoutPanel:表格布局面板,控件按网格排列。

  3. Panel:面板,用于容纳其他控件。

这些只是Windows Forms中的一部分常见概念、类和控件。Windows Forms 提供了丰富的控件和类库,允许开发者构建功能强大且用户友好的桌面应用程序。

2.6) 问题06:WPF 中有哪些常见的概念,类和控件等

Windows Presentation Foundation (WPF) 是用于创建桌面应用程序的强大框架。以下是一些在 WPF 中常见的概念、类和控件:

常见概念

  1. XAML (Extensible Application Markup Language): 一种用于定义 WPF 界面的标记语言。
  2. 数据绑定: 将UI元素绑定到数据源的机制,支持双向绑定。
  3. 样式和模板: 定义和复用UI元素外观的方式。
  4. 资源: 定义和管理可重用的对象和样式。
  5. 依赖属性: 支持WPF高级功能的属性系统。
  6. 路由事件: 一种事件处理机制,可在元素树中冒泡或隧道传递事件。

常见类

  1. Application: 表示WPF应用程序的类。
  2. Window: 表示一个窗口。
  3. UserControl: 用于创建自定义控件的基类。
  4. FrameworkElement: 大多数WPF控件的基类。
  5. DependencyObject: 依赖属性系统的基类。
  6. Dispatcher: 管理线程间的工作调度。

常见控件

  1. Button: 表示一个按钮。
  2. TextBox: 表示一个文本输入框。
  3. Label: 表示一个标签,用于显示文本。
  4. ComboBox: 表示一个下拉列表。
  5. ListBox: 表示一个列表框。
  6. Grid: 一个用于定义行和列布局的容器。
  7. StackPanel: 一个用于在水平或垂直方向上排列子元素的容器。
  8. Canvas: 一个用于绝对定位子元素的容器。
  9. DockPanel: 一个用于将子元素停靠到容器边缘的容器。
  10. TabControl: 一个用于创建选项卡界面的控件。

数据绑定相关类

  1. Binding: 定义数据绑定的类。
  2. BindingExpression: 表示单个绑定的实例。
  3. IValueConverter: 用于在绑定时转换数据的接口。
  4. INotifyPropertyChanged: 通知属性值更改的接口。

资源和样式相关类

  1. ResourceDictionary: 用于存储资源的字典。
  2. Style: 定义控件外观的类。
  3. ControlTemplate: 定义控件结构和行为的模板。
  4. DataTemplate: 定义数据展示方式的模板。

通过这些概念、类和控件,你可以创建功能丰富且用户界面友好的WPF应用程序。

三、09.13 周五

3.1)问题01: git怎么查询本地有哪些 commit没有 push到远端?

你可以使用 git log 命令来查询本地有哪些 commit 没有 push 到远端。具体步骤如下:

  1. 打开终端并进入你的 Git 仓库目录。
  2. 运行以下命令:
git log origin/your-branch..your-branch

其中 your-branch 是你当前所在的分支的名称。例如,如果你当前在 main 分支上,命令将是:

git log origin/main..main

这个命令将显示自从你上次从远端拉取代码后,当前分支上新增的 commit。

另外,你也可以使用以下命令来查看本地和远端分支的差异:

git log HEAD..origin/your-branch

这个命令显示的是远端分支上有而本地分支上没有的 commit。

为了简化操作,你还可以使用 git status 命令来检查是否有未推送的 commit:

git status

如果有未推送的 commit,git status 会在输出中显示类似以下的信息:

Your branch is ahead of 'origin/your-branch' by X commits.

其中 X 是未推送的 commit 数量。

希望这些方法对你有所帮助!


http://www.kler.cn/news/303432.html

相关文章:

  • 【运算你真的理解吗?】
  • 在 Java 编程中优化字符串处理:避免 `StringIndexOutOfBoundsException` 和提升代码可读性
  • ros中地面站和无人机跨平台数据传递,使用 UDP 进行跨平台传输(python代码)
  • 【物理编程】解决物理压力的正确画法
  • 记一次Hiveserver2连接异常的解决-腾讯云-emr
  • 量化交易策略:掌握能量潮指标,提前捕捉卖出时机(Python代码解析)
  • vue3项目中使用pdfjs-dist踩坑记录
  • Docker基本管理--Dockerfile镜像制作(Docker技术集群与应用)
  • ubuntu20.04 Qt6引用dcmtk库实现dicom文件读取和字符集转换
  • CSP-J 之计算机基本结构
  • YOLO介绍—datawhale
  • C语言 | Leetcode C语言题解之第404题左叶子之和
  • shell脚本语法
  • ASP.NET MVC 迅速集成 SignalR
  • 【spring】IDEA 新建一个spring boot 项目
  • 【无人机设计与控制】旋转无人机摆锤的SDRE仿真
  • VSCode 编写 vue 项目之一键生成 .vue 页面模版
  • 计算机网络:概述 - 性能指标
  • 【Linux 从基础到进阶】Docker Compose 编排工具使用
  • CategoriesController
  • 什么是图像的边缘?说说边缘检测的任务以及基本原理?
  • 无人机应用新纪元:图形工作站配置推荐与硬件解析
  • 网络安全-dom破坏结合jq漏洞以及框架漏洞造成的xss-World War 3
  • Python | Leetcode Python题解之第402题移掉K位数字
  • labview禁用8080端口
  • 合宙低功耗4G模组Air780EX——硬件设计手册01
  • 同步和异步是两种不同的程序执行方式
  • duckdb 连接postgres 和 jdbc 的使用
  • Prism 教程
  • Java集合框架(Collections Framework)入门