c# 在自定義類中控制form窗體中的控制元件 賦值或修改屬性
阿新 • • 發佈:2020-08-28
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();
}