C# 学习笔记

1.C#调用外部exe

// 引用库
using System.Diagnostics;

/*************************************************************
 * 无参调用exe
 *************************************************************/
// 具体调用代码
Process m_Process = new Process();
m_Process.StartInfo.FileName = "exePath"; //exe所在的文件夹绝对路径
m_Process.Start();

/*************************************************************
 * 有参调用exe
 *************************************************************/
Process cmd = new Process(); 
cmd.StartInfo.FileName = @"exePath"; //exe所在的文件夹绝对路径
cmd.StartInfo.CreateNoWindow = false;// 显示命令行窗口
cmd.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
string param1 = "456", param2 = "789";
cmd.StartInfo.Arguments = param1+" "+param2;
cmd.Start();

参照链接

C#调用外部exe(2021.4.15)_jing_zhong的博客-CSDN博客_c# 启动外部exeC#调用外部exe方式 2021.4.9调用C++封装好的exe调用Java封装好的exe调用java源码调用Python封装好的exe调用Python源码调用MATLAB封装好的exe测试调用C++封装好的exestring exefile = "d:\\chktool\\checktool.exe"; if (File.Exists(exefile)) { Process process = new Process(); ProcessStartInfhttps://blog.csdn.net/jing_zhong/article/details/115552400

2.调用*.mdb文件(System.Data.OleDb)

2.1.调用*.mdb环境

a. 要使用【Microsoft Access 数据库引擎可再发行程序包】32位。

 下载地址:Download Microsoft Access 2010 数据库引擎可再发行程序包 from Official Microsoft Download Centerbb

b.测试和打包时使用下x86环境运行

c.在NuGet中引入包"System.Data.OleDb"

C# 学习笔记_第1张图片

2.2调用代码

// 引用包
using System.Data.OleDb;

//实现代码
private void bt_mdb_oledb_Click(object sender, EventArgs e)
{
    OleDbConnection conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+数据库路径+";Jet OLEDB:Database Password="+ 数据库密码);
    conn.Open();
    OleDbCommand cmd = conn.CreateCommand();
    cmd.CommandText = "select * from " + 表名; // 查询语句
    OleDbDataReader dr = cmd.ExecuteReader(); // 执行查询语句
    DataTable dt = new DataTable();
    if (dr.HasRows) // 判断是否查询出结果
    {
       // 遍历取值
       for (int i = 0; i < dr.FieldCount; i++)
       {
           dt.Columns.Add(dr.GetName(i));
       }
       dt.Rows.Clear();
     }
     // 关闭数据库(上面代码的最好写个try-catch,然后把这块放finally里面)
     cmd.Dispose();
     conn.Close();
 }



//方法一**速度中等
OleDbDataReader reader = command.ExecuteReader();
while (reader.Read())
{
    var t1 = reader[0]; 
}

//方法二**速度最慢
OleDbDataReader reader = command.ExecuteReader();
while (reader.Read())
{
    var t1 = reader["字段名"]; 
}

//方法三**速度最快
OleDbDataReader reader = command.ExecuteReader();
while (reader.Read())
{
    var t1 = reader.GetValue(0); 
}

OleDbDataReader快速数据读取方式 - Hxxxxxxyyyyyy - 博客园https://www.cnblogs.com/dullfish/p/6214983.html

3.调用*.accdb文件(System.Data.OleDb)

3.1同2.1但是不需要32位【Microsoft Access 数据库引擎可再发行程序包】

3.2调用代码

// 引入库
using System.Data.OleDb;

private void bt_accdb_oledb_Click(object sender, EventArgs e)
{
    OleDbConnection conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=数据库路径;Jet OLEDB:Database Password=数据库密码");
    conn.Open();
    OleDbCommand cmd = conn.CreateCommand();
    cmd.CommandText = "select * from 表名";// 查询语句
    OleDbDataReader dr = cmd.ExecuteReader();
    DataTable dt = new DataTable();
    // 分析数据结果
    if (dr.HasRows)
    {
        for (int i = 0; i < dr.FieldCount; i++)
        {
            dt.Columns.Add(dr.GetName(i));
        }
        dt.Rows.Clear();
    }
    cmd.Dispose();
    conn.Close();
    DGV_Data.DataSource = dt;
}

4.连接Oracle(Oracle.ManagedDataAccess.Client)

4.1在NuGet中引入包"Oracle.ManagedDataAccess.Client"

C# 学习笔记_第2张图片

 4.2调用代码

// 包引入
using Oracle.ManagedDataAccess.Client;

// 调用代码
private void bt_oracle_Click(object sender, EventArgs e)
{
    // 链接地址:例如 数据库ip/数据库sid(172.0.0.1/orcl)
    var connectionString = "user id=用户id;password=密码;data source=链接地址";
    OracleConnection oraConn = null;
    OracleCommand oraCmd = null;
    OracleDataReader oraReader = null;
    try
    {
        oraConn = new OracleConnection(connectionString);
        oraConn.Open();
        oraCmd = oraConn.CreateCommand();
        oraCmd.CommandText = "select * from 表名"; // 查询语句
        oraReader = oraCmd.ExecuteReader();
        // 解析数据
        DataTable dt = new DataTable();
        if (oraReader.HasRows)
        {
            for (int i = 0; i < oraReader.FieldCount; i++)
            {
                dt.Columns.Add(oraReader.GetName(i));
            }
            dt.Rows.Clear();
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine($"Connection Failed: {ex.Message}");
    }
    finally
    {
        // 关闭数据库
        if (oraConn != null)
            oraConn.Close();
    }
}

参照链接

ODP.NET Core Managed Driver実装方法 | YukiPress.NET CoreからOracle Databaseに接続するには、ODP.NET Core Managed Driverを使います。さらに、これはOracle Clientのインストールなしで使用できます。今回の記事ではC#のプログラムかhttps://mat0401.info/blog/oracle-odpnet-manged1/ C#连接Oracle数据库的方法(Oracle.DataAccess.Client也叫ODP.net) - *(00)* - 博客园https://www.cnblogs.com/zouhao/p/9000286.html

5.C# combox不能输入的解决方法

C# combox不能输入的解决方法_wxstar8的博客-CSDN博客_c# combobox 不能输入https://blog.csdn.net/wxstar8/article/details/47009481

6.在屏幕上画线

Graphics g = panel1.CreateGraphics();
int x1(起始点的横坐标), x2(终点的横坐标), y1(起始点的纵坐标), y2(终点的纵坐标);
Pen pen = new Pen(Color.Black); // 画笔颜色
g.DrawLine(pen, new Point(x1, y1), new Point(x2, y2)); // 画画
pen.Dispose();
g.Dispose();
// 利用每次控件刷新都会掉Paint事件,在每次刷新时重新画线,实现永久保留
private void panel1_Paint(object sender, PaintEventArgs e)
{
    Graphics g = panel1.CreateGraphics();
    int x1(起始点的横坐标), x2(终点的横坐标), y1(起始点的纵坐标), y2(终点的纵坐标);
    Pen pen = new Pen(Color.Black); // 画笔颜色
    g.DrawLine(pen, new Point(x1, y1), new Point(x2, y2)); // 画画
    pen.Dispose();
    g.Dispose();
}

参照:

C#绘图:在屏幕上画一条直线 - 翔宇亭IT乐园https://www.biye5u.com/article/Csharp/mutimedia/2012/5814.html

7.多维数组获取某一维度的长度

有一个二维数组sz[,] 怎样获取sz 的行数和列数呢?

sz.GetLength(0) 返回第一维的长度(即行数) 第一维长度
sz.GetLength(1) 返回第二维的长度(即列数) 第二维长度

sz.GetLength(n - 1) 返回第n维的长度   第n维长度

参照:

C#获取二维数组的行数和列数及其多维。。。 - 孑孓子 - 博客园https://www.cnblogs.com/handboy/p/7148424.html

8.TextBox 如何在获取焦点后,全选文本

WinForm TextBox 如何在获取焦点后,全选文本_weixin_30568591的博客-CSDN博客https://blog.csdn.net/weixin_30568591/article/details/98408463

9.获得Windows系统中文件属性——GetFileAttributes详解

获得Windows系统中文件属性——GetFileAttributes详解_fivedoumi的专栏-CSDN博客_getfileattributeshttps://blog.csdn.net/fivedoumi/article/details/6933989

10.StreamReader和StreamWriter使用

StreamReader与StreamWriter 博客园https://www.cnblogs.com/kissdodog/archive/2013/01/27/2878667.html

11.杀掉进程

using System.Diagnostics;
// 杀掉进程
public static void KillProcess(string processName) 
{ 
    foreach (Process p in Process.GetProcesses())            
    {
        if (p.ProcessName.Contains("进程名称"))
        {
            try
            {
                p.Kill();
                p.WaitForExit(); // possibly with a timeout
                Console.WriteLine($"已杀掉进程!!!");
            }
            catch (Win32Exception e)
            { 
                Console.WriteLine(e.Message.ToString());    
            }
            catch (InvalidOperationException e)
            { 
                Console.WriteLine(e.Message.ToString()); 
            }
        }
        
    }
}

C# 杀掉系统中的进程 - 没事儿写个bug - 博客园https://www.cnblogs.com/swjian/p/11404142.html

12.C#实现字符的全角,半角转换

C#实现字符的全角,半角转换_kone666-CSDN博客_c# 全角转半角#region 全角转换半角以及半角转换为全角  ///转全角的函数(SBC case)  ///全角空格为12288,半角空格为32  ///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248  public static string ToSBC( string input)  {      // 半角转全角:      chhttps://blog.csdn.net/kone0611/article/details/68924168

13.正则表达式

C# 正则表达式大全(代码篇)https://www.cnblogs.com/zhaoshujie/p/9718301.html

14.C#窗体执行顺序

C#WinForm窗体事件执行次序(较完整版) - 林冠逹 - 博客园https://www.cnblogs.com/viclgd/archive/2010/12/01/1892574.html

15.设置编码

EncodingProvider 类 (System.Text) | Microsoft Docshttps://docs.microsoft.com/zh-cn/dotnet/api/system.text.encodingprovider?view=net-6.0

EncodingProvider provider = CodePagesEncodingProvider.Instance;
Encoding encoding = provider.GetEncoding("shift-jis");

16.C#中比较两个日期大小的方法

C#代码中如何比较两个日期的大小? - 小小邪 - 博客园C#中比较两个日期大小的方法 调用的代码 整体demo源码 具体效果图: 1)图1 2)图2https://www.cnblogs.com/xielong/p/9383058.html

17.关于控件长度“缇”(VB6使用)和“像素px”之间的转化问题

 转化说明:

关于单位“缇”与“像素”的转换,以及缇与其他单位(例如:厘米)之间的转换https://www.cnblogs.com/chenyebin/archive/2012/12/18/2822819.html

twip→ピクセルに変換する方法: DOBON.NETプログラミング掲示板過去ログhttps://dobon.net/vb/bbs/log3-10/5849.html

C# winform获取当前屏幕dpi缩小缩放比例_aidnexl的博客-CSDN博客_c# 获取屏幕缩放比例https://blog.csdn.net/weixin_37744986/article/details/108383240

 转化工具:

Convert Twips to Pixels (twip to PX) ― JustinTOOLs.comhttps://www.justintools.com/unit-conversion/length.php?k1=twips&k2=pixels

18.让Winform程序 contextMenuStrip控件跟随鼠标位置出现代码:

// 1:方法一
contextMenuStrip1.Show(Control.MousePosition.X, Control.MousePosition.Y);
// 2.方法二
contextMenuStrip1.Show(MousePosition);

winfrom窗体右键菜单跟随鼠标或者固定在程序中_weixin_30500105的博客-CSDN博客需求:在点击主导航栏,弹出contextMenuStrip控件时,将其出现位置固定解决:1、让Winform程序contextMenuStrip控件跟随鼠标位置出现代码:contextMenuStrip1.Show(Control.MousePosition.X, Control.MousePosition.Y); contextMe...https://blog.csdn.net/weixin_30500105/article/details/95679078

19.c#获取电脑屏幕的宽度和高度

Rectangle ScreenArea =  System.Windows.Forms.Screen.GetBounds(this);
int width1 = ScreenArea.Width; //屏幕宽度
int height1 = ScreenArea.Height; //屏幕高度

你可能感兴趣的:(c#,学习,开发语言)