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