none
兩事件如何共用數值 RRS feed

  • 問題

  • 請問如果想在label_click事件中取得code的值,然後讓panel中的控制項從資料庫中抓取目標為code(由label_click事件中取得)那一欄的資料,程式碼應該如何改呢? 因為是新手,如果有問得不周的地方,請見諒。

    我的程式碼如下:

    private void panel_load(object sender, EventArgs e)
            {
                MySqlConnection conn = new MySqlConnection();
                conn.Open();

                MySqlCommand cmdC = new MySqlCommand("Select item from table where Coding='" + code + "'", conn);
                MySqlDataReader readerC = cmdC.ExecuteReader();
                readerC.Read();
                nameA.Text = readerC["item"].ToString();
            }

    private void label_Click(object sender, EventArgs e)
            {
                code = "mouse";
                panelmain.Visible = true;
            }

    2019年7月27日 上午 06:39

所有回覆

  • (1) 有個建議,不要用串字串的方式寫 SQL 語法, 應該用參數式查詢,避免 SQL Injection 。

    參考 : 分享] 何謂 SQL injection,在此整理分享

    (2) 你的問題是 : 兩個方法(method) 如何共用一個變數 ? 如果這兩個方法是宣告在同一個類別的執行個體方法,最簡單的解決方式就是在類別中宣告一個私有欄位供大家存取。

    但你的情境似乎有點不一樣,因為你要使用的位置在 panel 的 Load 事件委派函式,這會產生另外一個問題是 "順序",如果 panel load 已經被引發了,那表示 panel_load method 已經被執行過,此後再改變 code 已經沒有影響了。或許你應該直接在 lable_click 執行你原本寫在  panel_load 的東西才對。


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。 https://skilltree.my/

    2019年7月27日 上午 07:55
    版主