2019年12月18日 星期三

在TEXTBOX按ENTER後直接執行按鈕事件

在OnKeyDown事件下寫入

            if(e.KeyCode == Keys.Enter)
            {
                button1.Focus();
                button1_Click(sender, e);
                textBox1.Focus();
            }

最後一行是把當前狀態回到textBox1的狀態,要保持在button1的狀態也是可以就不要寫那行

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;

用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();


利用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唯一)

應該會有更簡單的查詢方式不過我暫時只想到這種就先這樣

2019年12月11日 星期三

建立新的FORM更改起始FORM的方法

假如我要新增介面設計了FORM2,卻不想使用FORM1當程式的起始要使用FORM2

則是打開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分段去做切割再將資料貼在格子上

2019年12月4日 星期三

執行後將視窗最小化的方法

                    WindowState = FormWindowState.Minimized;

呼叫其他程式的方法

先using System.Diagnostics;

建立字串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貼上的方式貼上資料

寫一個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位數字表示
資訊開頭先記錄詳細時間,後面再記錄發生的狀況
程式要用的時候再呼叫就好