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();
参照链接
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"
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"
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不能输入的解决方法
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 如何在获取焦点后,全选文本
9.获得Windows系统中文件属性——GetFileAttributes详解
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#实现字符的全角,半角转换
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 provider = CodePagesEncodingProvider.Instance;
Encoding encoding = provider.GetEncoding("shift-jis");
16.C#中比较两个日期大小的方法
17.关于控件长度“缇”(VB6使用)和“像素px”之间的转化问题
转化说明:
twip→ピクセルに変換する方法: DOBON.NETプログラミング掲示板過去ログhttps://dobon.net/vb/bbs/log3-10/5849.html
转化工具:
18.让Winform程序 contextMenuStrip控件跟随鼠标位置出现代码:
// 1:方法一
contextMenuStrip1.Show(Control.MousePosition.X, Control.MousePosition.Y);
// 2.方法二
contextMenuStrip1.Show(MousePosition);
19.c#获取电脑屏幕的宽度和高度
Rectangle ScreenArea = System.Windows.Forms.Screen.GetBounds(this);
int width1 = ScreenArea.Width; //屏幕宽度
int height1 = ScreenArea.Height; //屏幕高度