1. 程式人生 > 實用技巧 >c# 在自定義類中控制form窗體中的控制元件 賦值或修改屬性

c# 在自定義類中控制form窗體中的控制元件 賦值或修改屬性

c# 在自定義類中控制form窗體中的控制元件 賦值或修改屬性

首先在 自定義類 的外面 宣告一個 委託模組

  //宣告一個委託模組 用來改變form1 窗體中的控制元件值
    public delegate void setStatusDelegate(string requestInfo);//引數的型別可以根據自己的需求變更 int string 或其他
  

然後在類裡面,新建一個委託模組的例項

 //定義一個委託的例項方法 
        public static setStatusDelegate setStatusDelegate;

然後在其他函式中呼叫它,並把需要傳送的引數值 賦值給委託模組的引數

 //呼叫委託 把requestInfo.body 放進委託裡
                if (UnknowRequest.setStatusDelegate != null)
                {
                    UnknowRequest.setStatusDelegate(requestInfo.Key);//把requestInfo.Key傳給了委託模組的引數
                    UnknowRequest.setStatusDelegate(requestInfo.Body);//把requestInfo.Body傳給了委託模組的引數
rstr += "key:"+ requestInfo.Key + ";body:"+ requestInfo.Body + ""; }

我們還要在窗體函式中做相應的賦值處理

新建一個函式用來呼叫新建類中的委託,並接收委託的引數值,把值賦給控制元件,本例程式碼中把值add到了listview中去

        //建立一個函式,用來呼叫委託 接收到的無法解析的資料
        private void getUnknowRequest()
        {
            //呼叫委託 並把委託中的值新增到listview
            
//using SupperSocketDemo.Command; 別忘記引用 UnknowRequest.setStatusDelegate = new setStatusDelegate((i) => { this.Invoke(new setStatusDelegate((requestInfo) => { this.lvlist.Items.Add("非命令資料 " + requestInfo.ToString() + " "+DateTime.Now.ToString()+""); }), i); }); }

最後在窗體的load事件中呼叫一下這個函式,就可以了。

private void Form1_Load(object sender, EventArgs e)
        {
          //呼叫委託 獲取非命令資料的解析
             getUnknowRequest();

        }