
- 类 别
- 程序设计语言
- 影响语言
- C++、C#、D、Java、JavaScript、ObjectPHP等
- 创始时间
- 1972年
- 主要编译器
- Visual C++、Clang、GCC、Turbo C等
- 中文名
- C语言
- 创始人
- Dennis MacAlistair Ritchie
- 发 源
- BCPL语言
- 外文名
- C Programming Language
-
vscode运行c#项目
2020-04-21 12:23:36vscode运行c#项目 安装环境 1、安装vscode,官网下载安装。 2、安装.net Core SDK,官网下载相应版本,默认安装路径,一路确定即可。 3、vscode商店下载c#插件。 运行程序 1、运行cmd到项目的cs文件夹中,输入... -
【C#】从头开始看一个C#项目
2018-06-13 08:47:40由于软件需要用C#进行二次开发,看了一段时间的语法之后,开始接触官网提供demo工程文件,将从头开始读一个C#项目所遇到的一些知识点记录下来。 C#项目的入口 一般C#项目中会有一个program.cs文件,可以称为主程序...由于软件需要用C#进行二次开发,看了一段时间的语法之后,开始接触官网提供demo工程文件,将从头开始读一个C#项目所遇到的一些知识点记录下来。
C#项目的入口
一般C#项目中会有一个
program.cs
文件,可以称为主程序,Main
方法为主程序中的入口点,通常是如下模板:static class Program { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] //WR 单线程,为应用程序分配主线程,Main方法是主线程的入口点 static void Main() { Application.EnableVisualStyles(); //WR 启用应用程序可视样式 Application.SetCompatibleTextRenderingDefault( false ); //WR 控件使用GDI+ Application.Run( new samlight_client_csharp() ); //WR 设置当前项目主窗体 } }
public partial class
`partial` 是部分类/局部类,在另一个`.cs`文件中可以再定义这个类名。
控件的
name
属性应该修改成有意义的名字,不要使用默认的
Form1
、Label1
等。
对应的初始化代码为:this.BUTTON_CONNECT_ETHERNET = new System.Windows.Forms.Button();
InitializeComponent()
方法建一个C#窗体项目,在
Form1.cs
和Form1.Designer.cs
里分别有一个InitializeComponent()
函数。Form1.Designer.cs
里的是定义 (函数名后面有大括号包含定义内容);
Form1.cs
里的是调用 (函数名后面分号结尾)。partial
表示以下创建的是分布类代码,也就是说 一个类的定义代码 可以写在两个不同的页面,
Form1.cs
和Form1.Designer.cs
调用子窗口
目的:在主窗口中通过点击一个按钮,打开子窗口。子窗口打开之后仍然能够操作主窗口。
private void BUTTON_TEXT_Click( object sender, EventArgs e ) { //WR 确保打开的text_frm子窗口数量为1 if( Application.OpenForms.OfType<text_frm>().Count() == 0) { text_frm text_form = new text_frm(ClientCtrl1); text_form.Show(); } }
Application.OpenForms
属性,包含属于此应用程序的所有当前打开窗体的FormCollection
,表示所有由应用程序窗体组成的只读集合。属于System.Windows.Forms
命名空间。FormCollection
的扩展方法OfType<TResult>()
,可以根据指定类型筛选IEnumerable
的元素。FormCollection 通过使用 Application 对象列表中整个当前打开的窗体的OpenForms 属性。属于System.Collections
命名空间。Enumerable.Count()
返回序列中的元素数,返回值为int32
型,属于System.Linq
命名空间。调用ActiveX控件
方法:打开一个窗体设计器(designer),在工具箱中右键“选择项”,弹出的对话框中选择“添加COM组件”,添加需要的ocx控件,然后将其拖入设计器中。在解决方案视图的“引用”选项卡下会自动添加
AxSAMLIGHT_CLIENT_CTRL_OCLib
, 在Form1.Designer.cs
中的InitializeComponent()
方法中会添加一行
private AxSAMLIGHT_CLIENT_CTRL_OCXLib.AxScSamlightClientCtrl axScSamlightClientCtrl1;
- Interop.xxx.dll是自动化(COM dll)包装器,可以在命名空间中操作对象;
- AxInterop.xxx.dll是ActivateX控件的控件包装器,可以将它拖到窗体上。
COM组件:
COM组件是以WIN32动态链接库(DLL)或可执行文件(EXE)形式发布的可执行代码组成。
COM组件必须隐藏(封装)其内部实现细节。
COM组件不是DLL,只是利用DLL来给组件提供动态链接的能力。
COM组件不是一个API函数集。
COM组件不是类。可以把
COM
看作是某种(软件)打包技术,即把它看作是软件的不同部分,按照一定的面向对象的形式,组合成可以交互的过程和一组支持库。ActiveX
是指宽松定义的、基于COM的技术集合。COM和一般DLL的区别
1、COM组件以接口对功能分类,便于组织;DLL特别是大的DLL,函数一大堆,难以组织;
2、COM组件便于升级维护,功能扩充,只需添加接口就行;DLL升级困难,函数不能随意改变;
3、COM创建调用有很好的安全性,DLL没有;
4、COM组件可轻松实现进程间调用,DLL很困难;
5、COM组件可轻松实现分布式调用,DLL不可能;
6、COM组件具有封装、继承、多态的面向对象特征,DLL只有封装; -
C#项目源码大集合系列一
2016-04-07 23:13:42资源太大,分系列,其他系列详见我的资料 源码01 销售管理系统 源码02 彩票分析系统 源码03 餐饮管理系统 源码04 C#点名程序 源码05 象棋游戏 源码06 变色球游戏 源码07 多功能计算器 ...深入体验C#项目开发 -
C#项目连接MySQL数据库
2019-03-27 17:37:33C#项目连接MySQL数据库 这里我是将方法全部都放在一个新建的MySQL类中了。也可以单独实现方法。 这里只提供了简单的增删改查。 这里是用C#的控制台应用程序做示范。也可以在Web Form或者Win Form等C#项目中通过这个...C#项目连接MySQL数据库
2020-9-1 09:07:44
在CSDN上图片显示有点问题,这是我在 语雀 上写的原版笔记:
https://www.yuque.com/yyymarshal/yyymarshal/vwqcrb- 这里我是将方法全部都放在一个新建的MySQL类中了。也可以单独实现方法。
- 这里只提供了简单的增删改查。
- 这里是用C#的控制台应用程序做示范。也可以在Web Form或者Win Form等C#项目中通过这个方法实现连接并操作MySQL数据库。
- 在进行操作前,请确保MySQL和Visual Studio已经安装完成,并且MySQL的服务已经打开。
- 数据库名字和表名:
1.新建C#控制台项目,添加MySQL的引用,新建MySQL类。
C:\Program Files (x86)\MySQL\Connector.NET 6.9\Assemblies\v4.5
2.编写MySQL类的代码。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using MySql.Data.MySqlClient; using System.Data; namespace _001_MySQL的连接 { class MySQL { string connStr; MySqlConnection conn; string cmdText; MySqlCommand cmd; public MySQL(string dataBaseName) { connStr = string.Format( "Database={0};DataSource=127.0.0.1;User=root;Pwd=root;port=3306", dataBaseName ); conn = new MySqlConnection(connStr); } /// <summary> /// 通过DataAdapter类和DataSet类来实现查询一个表的数据。 /// 需要输入的形参是:想要查询的表名 /// </summary> /// <param name="tableName"></param> public void Select(string tableName) { conn.Open(); cmdText = string.Format( "SELECT * FROM {0}", tableName ); cmd = new MySqlCommand(cmdText, conn); MySqlDataAdapter dad = new MySqlDataAdapter(cmd); DataSet dset = new DataSet(); dad.Fill(dset, tableName); for (int i = 0; i < dset.Tables[0].Rows.Count; i++) { for (int j = 0; j < dset.Tables[0].Columns.Count; j++) { if (j == dset.Tables[0].Columns.Count - 1) Console.Write(dset.Tables[0].Rows[i][j].ToString()); else Console.Write(dset.Tables[0].Rows[i][j].ToString() + ":"); } Console.WriteLine(); } conn.Close(); } /// <summary> /// 通过DataReader类来实现查询一个表的数据。 /// 需要输入的形参是:想要查询的表名,不固定个数的列名。 /// </summary> /// <param name="tableName"></param> /// <param name="columnsName"></param> public void Select(string tableName, params string[] columnsName) { conn.Open(); cmdText = string.Format( "SELECT * FROM {0}", tableName ); cmd = new MySqlCommand(cmdText, conn); MySqlDataReader dataReader = cmd.ExecuteReader(); while (dataReader.Read()) { Console.WriteLine( dataReader.GetString(columnsName[0]) + ":" + dataReader.GetString(columnsName[1]) ); } dataReader.Close(); conn.Close(); } /// <summary> /// 输入表名、ID列和Name列的名称来插入一条数据。 /// </summary> /// <param name="tableName"></param> /// <param name="id"></param> /// <param name="name"></param> public void Insert(string tableName, int id, string name) { conn.Open(); cmdText = string.Format( "INSERT INTO {0} VALUES({1},'{2}')", tableName, id, name ); cmd = new MySqlCommand(cmdText, conn); cmd.ExecuteNonQuery(); conn.Close(); } /// <summary> /// 通过ID来删除表中的一条数据 /// </summary> /// <param name="tableName"></param> /// <param name="id"></param> public void Delete(string tableName, int id) { conn.Open(); cmdText = string.Format( "DELETE FROM {0} WHERE ID={1}", tableName, id ); cmd = new MySqlCommand(cmdText, conn); cmd.ExecuteNonQuery(); conn.Close(); } /// <summary> /// 通过ID来修改表中的一条数据的Name值 /// </summary> /// <param name="tableName"></param> /// <param name="id"></param> /// <param name="name"></param> public void Update(string tableName, int id, string name) { conn.Open(); cmdText = string.Format( "UPDATE {0} SET NAME='{1}' WHERE ID={2}", tableName, name, id ); cmd = new MySqlCommand(cmdText, conn); cmd.ExecuteNonQuery(); conn.Close(); } /// <summary> /// @ 和 cmd.Parameters.AddWithValue("string","str");。 /// 这种方法不能用AddWithValue方法来添加表的名字,会报错, /// 只能添加列的属性的值。 /// 因为通过这种方法来添加表名的时候, /// 它会这样添加表名的信息:UPDATE 'TABLENAME' SET ...。 /// 多了一对单引号,所以会报错。 /// </summary> /// <param name="id"></param> /// <param name="name"></param> public void UpdateByParameters(int id, string name) { conn.Open(); cmdText = "UPDATE TEST_CONNECTION SET NAME=@INPUT_NAME WHERE ID=@INPUT_ID"; cmd = new MySqlCommand(cmdText, conn); //cmd.Parameters.AddWithValue("TABLENAME", tableName); cmd.Parameters.AddWithValue("INPUT_NAME", name); cmd.Parameters.AddWithValue("INPUT_ID", id); cmd.ExecuteNonQuery(); conn.Close(); } } }
3.编写主函数的测试代码。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _001_MySQL的连接 { class Program { static void Main(string[] args) { MySQL mySql = new MySQL("yyymarshal"); Console.WriteLine("Select()方法:"); mySql.Select("test_connection"); Console.WriteLine("\nInsert()方法:\n插入id=5,name=Test的一条数据"); mySql.Insert("test_connection", 5, "Test"); Console.WriteLine("---------------"); Console.WriteLine("Select()方法:"); mySql.Select("test_connection", "id", "name"); Console.WriteLine("\nUpdate()方法:\n将id=5的数据的name修改为PPP"); mySql.Update("test_connection", 5, "PPP"); Console.WriteLine("---------------"); Console.WriteLine("Select()方法:"); mySql.Select("test_connection"); Console.WriteLine("\nUpdateByParameters()方法:\n将id=5的数据的name修改为OOO"); mySql.UpdateByParameters(5, "OOO"); Console.WriteLine("---------------"); Console.WriteLine("Select()方法:"); mySql.Select("test_connection"); Console.WriteLine("\nDelete()方法:\n删除id=5的数据"); mySql.Delete("test_connection", 5); Console.WriteLine("---------------"); Console.WriteLine("Select()方法:"); mySql.Select("test_connection"); Console.ReadKey(); } } }
4.运行测试
运行前的数据表的数据:
运行结果:
-
深入体验C#项目开发(全部源代码及其附送源代码)
2014-04-30 09:13:53今天下载了一个哥们的深入体验C#项目开发全部源代码及其附送源代码下载了20次,才全部下载完毕。感觉着这哥们,分享精神可嘉,就是下载的时候有点麻烦。所以我借花献佛把全部源代码打包上传了。 -
最佳实践:C#项目转C++项目
2018-12-25 14:53:59最近在把一个C#项目转到C++项目,下面整理下C#和C++不同的地方,给各位个参考,避免入坑: 1)默认对象赋值方式不同,所以修改时要多加注意。具体参考 https://bbs.csdn.net/topics/392440547 2)类的变量默认值...最近在把一个C#项目转到C++项目,下面整理下C#和C++不同的地方,给各位个参考,避免入坑:
1)默认对象赋值方式不同,所以修改时要多加注意。具体参考 https://bbs.csdn.net/topics/392440547
2)类的变量默认值不同 .net默认是类型的默认值,C++没有默认值的。要避免C++的类成员没有默认值的意外行为。
3)a[i][j]和a[i,j]是不相同的。
4)VS2013 C++程序的默认堆栈大小为1MB,太小,有时候会堆栈溢出,可以参考 https://blog.csdn.net/feeltouch/article/details/9400095
5)std::remove不能从vector中移除元素,需要配合erase使用。
6)VS2013C++工程调试时看不到局部变量的值:设置问题项目右键属性打开后--Configuration Properties --->c/c++ ----> Optimization下面选择第一项选Disabled(/od)
7)C++浮点数在计算过程中保留有效数字,可以使用如下代码,但是耗时较多
double round(double number, unsigned int bits) { stringstream ss; ss << fixed << setprecision(bits) << number; ss >> number; return number; }
8)C#项目怎么来调用C++的动态库:
这里的result是C++动态库传出的参数,在C#里面用StringBuilder来接受,在C#里面调用GetProvincePrice时,提前给StringBuilder申请好空间。
bool GetProvincePrice(char * param_string, char * result);
[DllImport("CPlusPlus.dll", EntryPoint = "GetProvincePrice", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)] public extern static bool GetProvincePrice(string exlist, StringBuilder result);
-
C#项目中操作Excel文件——使用NPOI库
2016-08-29 20:23:18实际C#项目中经常会涉及到需要对本地Excel文件进行操作,特别是一些包含数据记录、分析、汇总功能模块的项目。常用的操作Excel文件的方法主要有三个: 1. OleDb: 这种方式是把整个Excel文件当做一个数据源来... -
c#项目如何发布到服务器
2020-03-31 17:51:14前言:此项目是C#项目采用服务端和客户端分离的MVVM的模式,现在需要把项目发布到服务器上以供访问 1.服务端 需要把服务端的数据库资源名称换成你服务器上数据库中的名称或者IP,然后重新生成解决方案,启动服务器,... -
VS中的C#项目怎样引入另一个项目
2019-08-21 22:19:05在C#项目A中需要引用项目B。 实现 将项目B手动复制到A所在的项目目录下的同一个解决方案中,即与项目A同级的目录下。 在VS中打开项目B,打开解决方案资源管理器--右击解决方案--添加--现有项目 然后找到... -
C# VSCode创建C#项目
2018-07-13 10:09:311、下载VSCode 2、下载NETCore环境3、安装C#扩展选项4、打开VScode终端 cd到你的目录文件夹(可以新建一个目录文件)PS C:\Users\Administrator\Desktop\VS> cd demo PS C:\Users\Administrator\Desktop\VS... -
C#项目启动调试时没有重新生成项目
2014-08-18 14:59:32C#项目启动调试时没有重新生成项目 -
c#项目发布在服务器上
2019-01-17 14:38:29c#项目发布在服务器上1.通过vs软件将项目发布在指定文件夹下2.将文件夹拷贝到服务器任意盘下3.找到服务器上的IIS管理器(以下是如何添加网站步骤) 1.通过vs软件将项目发布在指定文件夹下 2.将文件夹拷贝到服务器... -
C#项目开发案例全程实录(第2版).pdf
2013-07-18 21:42:35C#项目开发案例全程实录(第2版).pdf -
20个C#项目实战开发及项目全部源码
2018-08-08 09:33:32最近开始学C#,以前学C#的朋友給我丢过来这个文件,感觉很不错的优质代码,分享给大家看看 -
c#项目总结
2018-09-27 01:11:35所以打算写一些总结性的文章,先写几个项目,用于c#各个方向的封装使用 最后汇总成一个完善的解决方案。所有项目都在一个解决方案FastAIFrame 现在第一个很简单的项目log,封装log4net.解决日志写的问题。 项目git... -
Visual Studio 2010 打包C#项目程序
2016-07-07 17:09:40Visual Studio 2010 打包C#项目程序 -
实战突击 C# 项目开发案例整合 源代码 明日科技
2011-11-15 12:44:36说明:《实战突击 C# 项目开发案例整合》 随书源代码 人民邮电出版社 明日科技出版 -
c#项目大全
2017-06-11 13:41:22C#开源项目大全 商业协作和项目管理平台-TeamLab 网络视频会议软件-VMukti 驰骋工作流程引擎-ccflow 【免费】正则表达式测试工具-Regex-Tester Windows-Phone-7-SDK Excel-... -
C# 项目打开后引用下面都是黄色感叹号
2020-04-09 14:46:31C# 项目打开后引用下面都是黄色感叹号 C# 项目打开后引用下面都是黄色感叹号或者System.Web.Mvc引用后ActionResult无法转到视图 很简单你引用的packages删除掉重新生成下,就Ok ... -
Visual Studio 2010--C#跟西门子1200通讯(Sharp7)②--C#项目框架
2020-07-13 12:26:34Visual Studio 2010--C#跟西门子1200通讯(Sharp7)②--C#项目框架 上期回顾(上期主要对PLC的IP,访问使能,数据库的配置等进行了设置): 本期将在Microsoft Visual Studio 2010中,对PLC通讯进行代码编写,... -
.NET/C# 项目如何优雅地设置条件编译符号?
2019-01-01 11:00:22条件编译符号指的是 Conditional Compilation Symbols。你可以在 Visual Studio 的项目属性中设置,也可以直接在项目文件中写入 DefineConstants 属性。...理解 C# 项目 csproj 文件格式的本质和编译流... -
c#项目中 添加一个自动缩略图片
2016-04-08 04:38:36如题 c#项目中 添加一个自动缩略图片 请教代码如何实现 请教代码如何实现 -
C#项目目录结构
2018-02-24 17:26:56项目类型:C# Windows窗体应用程序 windows下是以一个文件夹表示一个项目 *.sln:(Visual Studio Solution) 通过为环境提供对项目、项目项和解决方案项在磁盘上位置的引用,可将它们组织到解决方案中。比如... -
C#项目的生成事件及批处理文件
2015-02-05 22:07:35一个C#项目,如果为同一个解决方案的其他项目所引用,则其编译后,会将DLL拷贝到引用项目中;但如果它并不被其他项目引用,但又想编译后能够自动将生成的东西拷贝过去,可以在项目的生成事件中,写上一些批处理命令... -
C#项目获取安装目标机C盘权限
2018-03-30 17:04:07C#项目获取安装目标机C盘权限 自己写的C#项目(有在目标机上写文件操作)如果要在目标机上顺利执行,则需要取得相应权限(安装在C盘的时候必做,其他盘不需要)才能顺利执行。如何获得呢? 用Visual Studio就能很... -
C#项目 学生选课系统 C#窗口 Winform项目 项目源码及使用说明
2019-02-22 20:15:59笔者录了两个视频,打开项目源码地址,可以先看看视频了解项目界面。 学生选课管理系统 项目介绍 这是一个学生选课信息管理系统,使用VS2010+SQL2008编写。 在 VS2017+SQL2014打开、运行正常。 有... -
C#项目中如何读取并修改App.config文件
2016-08-13 22:01:06C#项目中如何读取并修改App.config文件 时间:2014-10-01 本文简单介绍C#项目中读取并修改App.config文件的方法,AppConfig最重要的功能就是它将命令行选项和配置文件选项统一到一种数据结构中。 ... -
VS下 C#项目使用SVN版本号
2016-09-10 13:13:58为了实现C#项目中的SVN版本控制,我找了许多资料,然后在实际使用中又简化了下,只需要一份模板文件以及VS项目中生成前后事件的一些设置即可。 在C#项目中,记录程序版本的是AssemblyInfo.cs文件。版本参数为:... -
protobuf在C#项目中的使用
2015-08-13 11:00:58protobuf在C#项目中的使用 在C#项目中,有时候会使用到使用到protobuf来作为通信时数据交换的格式。 protobuf(ProtocolBuffer,简称PB),是google 的一种数据交换的格式。这是一种二进制的格式,比使用xml更... -
c#项目结构
2019-03-05 15:46:31在建立好dbhelper和program两个类之后,对主页面进行编程 每个题目/任务,建立一个页面:Employee,SQLSearch,SQLStatic; 每个页面,new一个实例,这样主界面和每个操作界面就连接起来了 ...
-
智能停车场云平台(附vue+SpringBoot前后端项目源码)
-
LVS_DR模式配置
-
Web应用程序测试的工具selenium用法详解
-
【考研初试】安徽建筑大学703艺术设计理论考研真题库资料
-
MySQL 事务和锁
-
scala-intellij-bin-2020.3.20.zip
-
Liunx 优化思路与实操步骤
-
linux ubuntu18.04 英伟达驱动 实测能装上 识别1080ti 1070ti显卡 NVIDIA-Linux-x86_64-460.39.run
-
thymeleafth的Spring Security标签控制
-
解决Chrome无法从该网站添加应用、扩展程序或脚本问题
-
Redis Desktop Manager_023210734.exe
-
【算法_01】两数之和
-
php 无法获取到header里的Authorization信息
-
注册公司名字大全集 注册公司用什么名字好?
-
MySQL 多实例安装 及配置主从复制实验环境
-
抖音任务点赞平台源码.zip
-
MySQL 索引 笔记
-
是我从xpath中学到的以及在日常中能常使用的
-
摄影测量之空间后方交会程序.zip
-
机器视觉学习基础绪论及应用