C#无标题栏窗体拖动代码

文章目录

  • 一、概念
  • 二、案例
  • 三、常见问题
  • 四、链接

一、概念

C#(C Sharp)是由微软公司开发的一种面向对象的编程语言。它是从C和C++语言演化而来的,并结合了Java和其他编程语言的特性。C#是微软.NET平台的一部分,允许开发人员创建各种应用程序,包括Windows桌面应用程序、Web应用程序、移动应用程序、游戏等。

以下是一些C#的关键概念:

  1. 面向对象编程(OOP):C#是一种面向对象的编程语言,支持封装、继承和多态等面向对象的概念。它将程序组织为对象,并通过类来定义对象的属性和行为。

  2. 类和对象:在C#中,类是对象的模板,用来定义对象的属性和方法。对象是类的实例,可以通过实例化类来创建对象。

  3. 命名空间(Namespace):命名空间是用来组织和管理相关类和其他类型的容器。通过使用不同的命名空间,可以避免类和其他类型之间的名称冲突。

  4. 变量和数据类型:在C#中,可以声明和使用各种变量来存储数据。C#提供了多种数据类型,包括整数、浮点数、布尔值、字符、字符串等。

  5. 控制结构:C#提供了各种控制结构,如条件语句(if-else、switch)、循环语句(for、while、do-while)、跳转语句(break、continue、return)等,用于控制程序的执行流程。

  6. 方法和函数:方法是一段可重用的代码块,用于执行特定的任务。C#中的方法可以有参数和返回值。函数是一种特殊的方法,它有一个指定的名称,可以通过调用该函数来执行一系列操作。

  7. 异常处理:在C#中,可以使用异常处理机制来捕获和处理运行时错误。使用try-catch语句块可以捕获可能会引发异常的代码,并执行相应的处理逻辑。

  8. 泛型:C#支持泛型编程,它允许在编写类和方法时使用类型参数,从而实现更通用和可重用的代码。

  9. LINQ:LINQ(Language-Integrated Query)是一种查询语言,可以在C#中进行集合和数据查询。它允许开发人员通过类似SQL的语法来查询和操作数据。

  10. 强类型和类型推断:C#是一种强类型的语言,要求所有的变量在声明时都要指定数据类型。C#也支持类型推断,可以根据上下文自动推断变量的类型,简化代码编写。

这些是C#的一些基本概念,了解和掌握这些概念将有助于理解和使用C#编程语言。

二、案例

在C#中,可以通过以下代码实现无标题栏窗体的拖动功能:

using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;namespace NoTitleBarForm
{public partial class MainForm : Form{private const int WM_NCHITTEST = 0x84;private const int HT_CLIENT = 0x1;private const int HT_CAPTION = 0x2;private const int WM_NCLBUTTONDOWN = 0xA1;private const int HTLEFT = 10;private const int HTRIGHT = 11;private const int HTTOP = 12;private const int HTTOPLEFT = 13;private const int HTTOPRIGHT = 14;private const int HTBOTTOM = 15;private const int HTBOTTOMLEFT = 16;private const int HTBOTTOMRIGHT = 17;[DllImport("user32.dll")]public static extern bool ReleaseCapture();[DllImport("user32.dll")]public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);public MainForm(){InitializeComponent();}protected override void WndProc(ref Message m){if (m.Msg == WM_NCHITTEST){base.WndProc(ref m);if (m.Result.ToInt32() == HT_CLIENT){m.Result = new IntPtr(HT_CAPTION);}}else{base.WndProc(ref m);}}private void MainForm_MouseDown(object sender, MouseEventArgs e){if (e.Button == MouseButtons.Left){ReleaseCapture();SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);}}}
}

以上代码中,首先通过在 WndProc 方法中重写处理 WM_NCHITTEST 消息,将鼠标在客户区的点击结果设置为标题栏,从而实现无标题栏窗体的移动。

然后,在 MouseDown 事件中判断鼠标左键被按下时,调用 ReleaseCapture 方法和 SendMessage 方法,来进行拖动操作。

最后,在窗体的 MouseDown 事件中添加事件处理程序 MainForm_MouseDown,以响应鼠标按下事件。

三、常见问题

C#常见问题及案例代码

  1. 如何在C#中输出Hello World?
using System;class Program
{static void Main(string[] args){Console.WriteLine("Hello World!");}
}
  1. 如何在C#中定义变量并赋值?
int number = 10;
string name = "John";
double price = 9.99;
bool isActive = true;
  1. 如何在C#中进行条件判断?
int number = 10;if (number > 0)
{Console.WriteLine("Number is positive.");
}
else if (number < 0)
{Console.WriteLine("Number is negative.");
}
else
{Console.WriteLine("Number is zero.");
}
  1. 如何在C#中使用循环?
for (int i = 0; i < 10; i++)
{Console.WriteLine("Value of i: " + i);
}while (condition)
{// 循环体
}do
{// 循环体
} while (condition);
  1. 如何在C#中定义和使用函数?
int Add(int a, int b)
{return a + b;
}int result = Add(5, 3);
Console.WriteLine("Result: " + result);
  1. 如何在C#中定义和使用类?
class Person
{public string Name { get; set; }public int Age { get; set; }public void SayHello(){Console.WriteLine("Hello, my name is " + Name);}
}Person person = new Person();
person.Name = "John";
person.Age = 30;
person.SayHello();

在这里插入图片描述

四、链接

Csharp简介
Csharp文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/237805.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GAMES101:作业7记录

1. 总览 在之前的练习中,我们实现了 Whitted-Style Ray Tracing 算法,并且用 BVH等加速结构对于求交过程进行了加速。在本次实验中,我们将在上一次实验的基础上实现完整的 Path Tracing 算法。至此,我们已经来到了光线追踪版块的最后一节内容。 请认真阅读本文档,按照本文档指…

使用swift创建第一个ios程序

一、安装xcode 先到app store中下载一个Xcode app 二、创建项目 1、项目设定 创建ios app 2、工程结构 三、修改代码实现按键联动 四、运行测试

AI大模型引领未来智慧科研暨ChatGPT在地学、GIS、气象、农业、生态、环境等领域中的高级应用

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮&#xff0c;可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…

YOLOv8 Ultralytics:使用Ultralytics框架进行FastSAM图像分割

YOLOv8 Ultralytics&#xff1a;使用Ultralytics框架进行FastSAM图像分割 前言相关介绍前提条件实验环境安装环境项目地址LinuxWindows 使用Ultralytics框架进行FastSAM图像分割参考文献 前言 由于本人水平有限&#xff0c;难免出现错漏&#xff0c;敬请批评改正。更多精彩内容…

SpringCloud:Ribbon

文章目录 Ribbon快速入门Ribbon负载均衡算法常见的负载均衡算法更改算法规则修改配置 饥饿加载 Ribbon ribbon是一个客户端负载均衡器&#xff0c;会从注册中心拉取可用服务&#xff0c;当客户端需要获取服务请求时&#xff0c;ribbon能够解析服务地址并实现负载均衡 快速入门 …

伴鱼实时数仓建设案例

伴鱼实时数仓建设案例 文章目录 伴鱼实时数仓建设案例伴鱼实时作业应用场景伴鱼实时数仓的建设体系DWD 层复杂场景数据处理方案1. 数据的去重2. join场景两条实时数据流相关联对于关联历史数据 3. 从数据形态观查join DWS 数据层数据处理方案未来与展望 随着伴鱼业务的快速发展…

mysql进阶 - 存储过程

目录 1. 用途&#xff1a; 2. 相关语法 2.1 创建 2.1.1 语法 2.1.2 示例 2.2 查看存储过程 2.3 调用 2.4 修改存储过程 2.5 删除存储过程 1. 用途&#xff1a; 存储过程广泛存在于一些遗留系统&#xff0c;可以减少代码的编写。而近些年&#xff0c;存储过程很少再用…

【Maven】001-Maven 概述

【Maven】001-Maven 概述 文章目录 【Maven】001-Maven 概述一、Maven 概述1、为什么学习 MavenMaven 作为依赖管理工具Maven 作为构建工具其它 2、Maven 介绍3、Maven 软件工作模型图 一、Maven 概述 1、为什么学习 Maven Maven 作为依赖管理工具 依赖管理&#xff1a; Mave…

【Docker】Docker安装入门教程及基本使用

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《Docker实战》。&#x1f3af;&#x1f3af; &…

WEB前端人机导论实验-实训3超链接与多媒体文件应用

1.项目1 设计简易灯箱画廊 A.题目要求&#xff1a; 编程实现简易灯箱画廊&#xff0c;鼠标单击任一个图像超链接&#xff0c;在底部浮动框架中显示大图像&#xff0c;效果如下的页面。 B.思路: &#xff08;1&#xff09;CSS样式&#xff1a; a.在样式中对body元素进行居中…

【复现】大华 DSS 数字监控系统 SQL 注入漏洞_18

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一&#xff1a; 四.修复建议&#xff1a; 五. 搜索语法&#xff1a; 六.免责声明 一.概述 大华DSS是大华的大型监控管理应用平台&#xff0c;支持几乎所有涉及监控等方面的操作&#xff0c;支持多级跨平台联网等操作。 可…

GPT-4与DALL·E 3:跨界融合,开启绘画与文本的新纪元

在人工智能的发展浪潮中&#xff0c;MidTool&#xff08;https://www.aimidtool.com/&#xff09;的GPT-4与DALLE 3的集成代表了一个跨越式的进步。这一集成不仅仅是技术的结合&#xff0c;更是艺术与文字的完美融合&#xff0c;它为创意产业带来了革命性的变革。本文将探讨GPT…

高校站群内容管理系统开发语言各有优势

站群管理系统开发可以选择多种编程语言&#xff0c;具体选择哪种语言最好需要考虑多个因素&#xff0c;包括开发团队的技术栈、项目需求、性能要求、安全性等。下面列举一些常见的编程语言及其适用场景&#xff1a; PHP&#xff1a;PHP是一种广泛使用的服务器端脚本语言&#…

PLC、工业设备如何远程访问?贝锐蒲公英云智慧组网实现数据互通

在工业4.0时代&#xff0c;工业数字化的核心在于数据的互联互通&#xff0c;而在整个工业数字化、智能化的过程中&#xff0c;往往面临数据采集困难、设备运行情况难以知晓、部署管理难度大、后期维护成本高等问题。 显然&#xff0c;PLC设备在整个工业数字化进程中扮演的角色…

算法通关村番外篇-跳表

大家好我是苏麟 , 今天来聊聊调表 . 跳表很少很少实现所以我们只了解就可以了 . 跳表 链表在查找元素的时候&#xff0c;因为需要逐一查找&#xff0c;所以查询效率非常低&#xff0c;时间复杂度是O(N)&#xff0c;于是就出现了跳表。跳表是在链表基础上改进过来的&#xff0…

启动redis出现Creating Server TCP listening socket 127.0.0.1:6379: bind: No error异常

1.进入redis安装目录&#xff0c;地址栏输入cmd 2.输入命令 redis-server.exe redis.windows.conf redis启动失败 解决&#xff0c;输入命令 #第一步 redis-cli.exe#第二步 shutdown#第三步 exit第四步 redis-server.exe redis.windows.conf 显示以下图标即成功

ajax+axios——统一设置请求头参数——添加请求头入参——基础积累

最近在写后台管理系统&#xff08;我怎么一直都只写管理系统啊啊啊啊啊啊啊&#xff09;&#xff0c;遇到一个需求&#xff0c;就是要在原有系统的基础上&#xff0c;添加一个仓库的切换&#xff0c;并且需要把选中仓库对应的id以请求头参数的形式传递到每一个接口当中。。。 …

奇异值分解在图形压缩中的应用

奇异值分解在图形压缩中的应用 在研究奇异值分解的工程应用之前&#xff0c;我们得明白什么是奇异值&#xff1f;什么是奇异向量&#xff1f; 奇异值与奇异向量 概念&#xff1a;奇异值描述了矩阵在一组特定向量上的行为&#xff0c;奇异向量描述了其最大的作用方向。 奇异值…

Android14之刷机模式总结(一百七十八)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

熊猫电竞赏金电竞系统源码 APP+H5双端 附搭建教程 支持运营级搭建

简介: 熊猫电竞赏金电竞系统源码 APP+H5双端 附搭建教程 支持运营级搭建 可搭建!运营级!首次公开! 赏金赛源码,用户通过平台打比赛,赢了获得奖金奖励, 金币赛、赏金赛、vip赛等种赛事 可开王者荣耀、和平精英比赛 支持1v1、单排、双排组、战队排等多种比赛模式 …