在OnKeyDown事件下寫入
if(e.KeyCode == Keys.Enter)
{
button1.Focus();
button1_Click(sender, e);
textBox1.Focus();
}
最後一行是把當前狀態回到textBox1的狀態,要保持在button1的狀態也是可以就不要寫那行
2019年12月18日 星期三
2019年12月15日 星期日
MYSQL建立一個帳號並允許本機外部連線的方式
先打開Mysql的Command Line
登入root密碼
1.新增使用者
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
username是新建的帳號
password是這個帳號的密碼
%是可以從任意IP登入,也可以改成192.168.%.%之類的
2.查詢使用者
SELECT USER, host from mysql.user;
3.刪除使用者
DROP USER 'username' @ '%';
4.修改使用者權限
GRANT ALL ON *.* TO 'username'@'%';
這是把資料庫下所有表單的權限都開給username這個使用者
要限制表單或資料庫就把*.*改成表單或資料庫的名稱
5.處理完要把系統權限更新
FLUSH PRIVILEGES;
登入root密碼
1.新增使用者
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
username是新建的帳號
password是這個帳號的密碼
%是可以從任意IP登入,也可以改成192.168.%.%之類的
2.查詢使用者
SELECT USER, host from mysql.user;
3.刪除使用者
DROP USER 'username' @ '%';
4.修改使用者權限
GRANT ALL ON *.* TO 'username'@'%';
這是把資料庫下所有表單的權限都開給username這個使用者
要限制表單或資料庫就把*.*改成表單或資料庫的名稱
5.處理完要把系統權限更新
FLUSH PRIVILEGES;
用C#連結MYSQL做操作
安裝好MYSQL套件後
using MySql.Data.MySqlClient;
要先登入MYSQL,為了讓未來如果要修改簡單點,所以設變數
string dbHost = "192.168.0.1";//資料庫位址
string dbUser = "userName";//資料庫使用者帳號
string dbPass = "Password";//資料庫使用者密碼
string dbName; //資料庫名稱
String cmdText; //要輸入的指令
string connStr = "server=" + dbHost + ";uid=" + dbUser + ";pwd=" + dbPass + ";database=" + dbName;
MySqlConnection conn = new MySqlConnection(connStr);
conn.Open();
using MySql.Data.MySqlClient;
要先登入MYSQL,為了讓未來如果要修改簡單點,所以設變數
string dbHost = "192.168.0.1";//資料庫位址
string dbUser = "userName";//資料庫使用者帳號
string dbPass = "Password";//資料庫使用者密碼
string dbName; //資料庫名稱
String cmdText; //要輸入的指令
string connStr = "server=" + dbHost + ";uid=" + dbUser + ";pwd=" + dbPass + ";database=" + dbName;
MySqlConnection conn = new MySqlConnection(connStr);
conn.Open();
利用MYSQL確認登入帳號密碼
先在MYSQL建立一組帳號密碼表單,欄位只有ID和PASSWORD
userName = textBox1.Text.ToString();
passWord = textBox2.Text.ToString();
cmdText = "SELECT COUNT(*) FROM account WHERE ID = '" + userName + "' AND Password = '" + passWord + "'";
MySqlCommand cmd = new MySqlCommand(cmdText, conn);
int count = Convert.ToInt32(cmd.ExecuteScalar());
if (count == 1)
{
//帳號密碼成功要做的事情
}
else
{
MessageBox.Show("帳號或密碼錯誤!");
}
利用計算符合筆數去做確定有沒有符合的帳號密碼組
因為只輸入一組帳密,所以出來的結果最多只有一組,不會超過兩組的結果(ID唯一)
應該會有更簡單的查詢方式不過我暫時只想到這種就先這樣
userName = textBox1.Text.ToString();
passWord = textBox2.Text.ToString();
cmdText = "SELECT COUNT(*) FROM account WHERE ID = '" + userName + "' AND Password = '" + passWord + "'";
MySqlCommand cmd = new MySqlCommand(cmdText, conn);
int count = Convert.ToInt32(cmd.ExecuteScalar());
if (count == 1)
{
//帳號密碼成功要做的事情
}
else
{
MessageBox.Show("帳號或密碼錯誤!");
}
利用計算符合筆數去做確定有沒有符合的帳號密碼組
因為只輸入一組帳密,所以出來的結果最多只有一組,不會超過兩組的結果(ID唯一)
應該會有更簡單的查詢方式不過我暫時只想到這種就先這樣
2019年12月11日 星期三
建立新的FORM更改起始FORM的方法
假如我要新增介面設計了FORM2,卻不想使用FORM1當程式的起始要使用FORM2
則是打開Program.cs
Application.Run(new Form1());
Form1改成Form2或是其他要當起始Form的
則是打開Program.cs
Application.Run(new Form1());
Form1改成Form2或是其他要當起始Form的
2019年12月8日 星期日
將EXCEL內的資料貼上Datagridview物件的方法
private void PasteClipboard(DataGridView Datagridview)
{
try
{
string clipboardText = Clipboard.GetText();
string[] lines = clipboardText.Split('\n');
int RowIndex = Datagridview.CurrentCell.RowIndex;
int ColIndex = Datagridview.CurrentCell.ColumnIndex;
int RowCount = Datagridview.Rows.Count;
DataGridViewCell CurrentCell;
if (lines.Length > RowCount - RowIndex)
{
int cut = lines.Length - (RowCount - RowIndex);
Datagridview.Rows.Add(cut);
}
foreach (string line in lines)
{
string[] cells = line.Split('\t');
for (int i = 0; i < cells.Length; i++)
{
CurrentCell = Datagridview[ColIndex + i, RowIndex];
string value = cells[i];
CurrentCell.Value = value;
}
RowIndex++;
}
}
catch
{
MessageBox.Show("Error");
return;
}
參考別人的,找出\n分行和\t分段去做切割再將資料貼在格子上
{
try
{
string clipboardText = Clipboard.GetText();
string[] lines = clipboardText.Split('\n');
int RowIndex = Datagridview.CurrentCell.RowIndex;
int ColIndex = Datagridview.CurrentCell.ColumnIndex;
int RowCount = Datagridview.Rows.Count;
DataGridViewCell CurrentCell;
if (lines.Length > RowCount - RowIndex)
{
int cut = lines.Length - (RowCount - RowIndex);
Datagridview.Rows.Add(cut);
}
foreach (string line in lines)
{
string[] cells = line.Split('\t');
for (int i = 0; i < cells.Length; i++)
{
CurrentCell = Datagridview[ColIndex + i, RowIndex];
string value = cells[i];
CurrentCell.Value = value;
}
RowIndex++;
}
}
catch
{
MessageBox.Show("Error");
return;
}
參考別人的,找出\n分行和\t分段去做切割再將資料貼在格子上
2019年12月4日 星期三
呼叫其他程式的方法
先using System.Diagnostics;
建立字串fileName,將程式路徑放入fileName中
路徑的\要改成\\
例如:D:\logs要改成D:\\logs
如果是同一層的另一個資料夾下則可以用相對路徑的方式
例如:同層的logs可以寫作 .\\logs
Process.Start(fileName);
建立字串fileName,將程式路徑放入fileName中
路徑的\要改成\\
例如:D:\logs要改成D:\\logs
如果是同一層的另一個資料夾下則可以用相對路徑的方式
例如:同層的logs可以寫作 .\\logs
Process.Start(fileName);
直接不帶參數呼叫程式
2019年12月3日 星期二
TextBox禁止輸入中文的方法
1.TextBox中的ImeMode設成Disable禁止切換成中文輸入
2.TextBox中的ShortcutsEnabled設成false禁止右鍵貼上
3.OnKeyDown事件中寫入
if(e.Control && e.KeyCode == Keys.V) //禁止貼上中文
{
e.Handled = true;
}
禁止用鍵盤快捷CTRL+V貼上的方式貼上資料
2.TextBox中的ShortcutsEnabled設成false禁止右鍵貼上
3.OnKeyDown事件中寫入
if(e.Control && e.KeyCode == Keys.V) //禁止貼上中文
{
e.Handled = true;
}
禁止用鍵盤快捷CTRL+V貼上的方式貼上資料
寫一個LOGS檔案
固定放在D:\\logs下
要先
using System.IO
private static void writeLog(string logText)
{
DateTime Date = DateTime.Now;
string todayAllStat = Date.ToString("yyyy-MM-dd HH:mm:ss");
string todayYMD = Date.ToString("yyyyMMdd");
if(!Directory.Exists("D:\\logs"))
{
Directory.CreateDirectory("D:\\logs");
}
File.AppendAllText("D:\\logs\\" + todayYMD + ".txt", "\r\n" + todayAllStat + " -- " + logText);
}
檔名用年月日8位數字表示
資訊開頭先記錄詳細時間,後面再記錄發生的狀況
程式要用的時候再呼叫就好
要先
using System.IO
private static void writeLog(string logText)
{
DateTime Date = DateTime.Now;
string todayAllStat = Date.ToString("yyyy-MM-dd HH:mm:ss");
string todayYMD = Date.ToString("yyyyMMdd");
if(!Directory.Exists("D:\\logs"))
{
Directory.CreateDirectory("D:\\logs");
}
File.AppendAllText("D:\\logs\\" + todayYMD + ".txt", "\r\n" + todayAllStat + " -- " + logText);
}
檔名用年月日8位數字表示
資訊開頭先記錄詳細時間,後面再記錄發生的狀況
程式要用的時候再呼叫就好
訂閱:
意見 (Atom)