1. 程式人生 > >C#建立控制元件陣列,實現控制元件批量操作

C#建立控制元件陣列,實現控制元件批量操作

最近在做一個小專案時,遇到一個問題,如下圖。


圖中是9個按鈕(Button)控制元件,現在希望能夠給9個按鈕新增一個特效,就是點選之後的按鈕左端會有藍條表示該按鈕已被點選,同時只有一個按鈕會有這樣的效果。

剛開始的時候糾結了一陣子怎麼來寫,後來想到了C#很多型別的資料都可以建立一個統一的陣列,那麼控制元件行不行呢……筆者嘗試著按照C#建立陣列的格式 型別名+方括號,也就是Button[]來建立一個按鈕的陣列,居然成功了……也就是說,C#中是支援把控制元件像資料一樣建立一個類似陣列的組來進行批量的操作和管理。

知道“居然還可以有這種操作以後”,這種效果的實現方法也就瞬間想出來了。

建立一個接受Button型別變數的函式,把9個按鈕放進一個組中,foreach一下,每個Button的圖片先改成沒有藍條的,然後再根據接受的Button變數,只調整這一個按鈕的圖片為有藍條的即可。參考程式碼如下:

public void button_bg(Button btn)
        {
            Button[] sidebtns= { btn_1,btn_2,btn_3};

            foreach (var item in sidebtns)
            {
                item.Background = new ImageBrush(new BitmapImage(
                    new Uri(@"pack://application:,,,/Resources/button_ns.png", UriKind.Absolute)
                ));
            }

            btn.Background = new ImageBrush(new BitmapImage(
                    new Uri(@"pack://application:,,,/Resources/button_s.png", UriKind.Absolute)
                ));

        }

就可以達到需要的效果了。


除去Button,其他控制元件也可以如此進行批量操作,方法大致都是一樣的。

希望對大家能夠有所幫助。