iT邦幫忙

0

請問C#可以跨類改ui嗎?

  • 分享至 

  • xImage

A.cs是一個純類別..當A裡面的if達成條件時要呼叫form1的ui做顯示..當ui被點選時..要回到A,c裡當初if條件達成時的位置繼續..但A裡面的function是由form1裡面thread的function呼叫的..請問有辦法做到這樣嗎?我用A來改form1的ui都不會動作

franx0722 iT邦新手 2 級 ‧ 2022-07-19 08:12:11 檢舉
用派委
水無痕 iT邦新手 3 級 ‧ 2022-07-29 08:26:23 檢舉
基本觀念:
`當ui被點選時` --- 這句話,其實就是 form 的 event ,在該 event 指向的 method 去呼叫 A.cs 的某個 method 並取得回傳值,依照回傳值去決定 form 的顯示邏輯 !

提醒:
form 裡面請專心處理 ui 的邏輯,不要把 ui 的邏輯交由其他的 class 處理 !
每個 class 有自己的職責,不要混淆了 !

如果是想要在 ui event 觸發後,不要佔住 ui thread 的話,這算是另一個議題喔 !
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1
海綿寶寶
iT邦大神 1 級 ‧ 2022-07-19 09:22:01

我實在想不到除了遊戲之外
會需要用到 thread 來 update UI form

Google 之後還真有很多人問
以下是兩篇供參考
第1篇
第2篇

franx0722 iT邦新手 2 級 ‧ 2022-07-19 11:20:20 檢舉

工業控制會例如
伺服馬達控制的目前位置與狀態
IO控制input,ouput狀態
...

rabbit iT邦新手 4 級 ‧ 2022-07-27 20:57:35 檢舉

謝謝this.Invoke()這個方式已是本來的內容..現在大概是form1是一個有form的類..有再用委派invoke這些..但是想問能否由A class這個沒form的類..來到form1的invoke這改form1的UI..再回到A class原來那個地方

1
rofellos
iT邦新手 2 級 ‧ 2022-07-19 09:34:40
rabbit iT邦新手 4 級 ‧ 2022-07-27 20:57:46 檢舉

謝謝this.Invoke()這個方式已是本來的內容..現在大概是form1是一個有form的類..有再用委派invoke這些..但是想問能否由A class這個沒form的類..來到form1的invoke這改form1的UI..再回到A class原來那個地方

1
Juro十六
iT邦新手 3 級 ‧ 2022-07-21 13:24:40

我之前有找過做過類似的案例
不知道能不能符合你的要求

//使用控制項Panel在Form當中繪製你要變更的區域
//並且在Form1.cs中創建一個
//Panel1是你要更換的地方
private Form activeForm = null;
private void openChildForm(Form MainForm)
        {
            if (activeForm != null) activeForm.Close();
            activeForm = MainForm;
            MainForm.TopLevel = false;
            MainForm.FormBorderStyle = FormBorderStyle.None;
            MainForm.Dock = DockStyle.Fill;
            Panel1.Controls.Add(MainForm);
            Panel1.Tag = MainForm;
            MainForm.BringToFront();
            MainForm.Show();
        }

並且用你需求的判斷式,當事件產生後則直接帶入

//Form2可以是任意你表單的視窗
openChildForm(new Form2());

https://i.imgur.com/au6OM76.png
https://i.imgur.com/kR60IIm.png

rabbit iT邦新手 4 級 ‧ 2022-07-27 20:58:19 檢舉

謝謝你的方式提供.我在試試.謝謝

我要發表回答

立即登入回答