我在winform中製作一個UI,我使用VS2015來創建winform。用戶界面通過選項卡控件細分爲多個頁面。在其中一個標籤頁以及其他東西(圖片框,文本框,按鈕等)中,我有8個名爲cb1〜cb8的複選框和8個名爲scrjoint1〜scrjoint8的水平滾動條。如何在控件上使用foreach()來操縱另一個控件?
滾動條用於在圖片框中繪製的對象的RotateTransform()中設置角度值。我想要做的是:
1.如果CB1被檢查,scrjoint1爲0
- 否則scrl1是無論用戶將其設置爲。
2.如果CB2是支票,scrljoint2是0
- 否則scrljoint2是世襲的用戶設定的那樣。
3.依次爲其他複選框和橫向滾動。
而是逐一檢查每個複選框,然後分別給scrljint的價值,我腦子裏想的是使用的foreach()函數,如下面的格式來實現:
private void scrJoint_Scroll(object sender, ScrollEventArgs e)
{
foreach (var cbControl in this.Controls)
{
if (cbControl is CheckBox)
{
if (((CheckBox)cbControl).Checked)
{
//set scrolJoint1~8 = 0 according to checkbox that is checked
}
else
{
//Do nothing
}
}
}
}
但我現在遇到的最新問題是,如果有一個或多個複選框被選中(讓cb1和cb2選中),我應該如何將相應的水平滾動條(scrJoint1
和scrJoint2
)設置爲0:
if (((CheckBox)cbControl).Checked)
{
//set scrolJoint1~8 = 0 according to checkbox that
}
else
{
//Do nothing
}
夫婦更多的問題我喜歡問我想要做什麼:
1.是否使用foreach()
是我想要實現的一個好主意?
2.如果我使用If-Else逐一檢查它,會更好嗎(儘管我不想使用此方法,因爲稍後可能需要包含更多複選框和滾動條,而且代碼會非常快地變得很可笑)。
3.是否有另一種更狡猾的做法(乾淨和短的方法是首選)做我想達到的,你們可以建議(如果有的話,你可以提供一個例子)。
在每個複選框的檢查事件上設置邏輯並且設置相關的滾動條位置並禁用它會不會更容易? –
一個想法是組合/放置chkBox和滾動到/到單個控件(即一個組),並有8個,這些控件封裝了checkBox和scroll之間的關係。另一種選擇是將chkBox的Tag屬性設置爲指向其相關滾動並使用它。 – tolanj
代碼沒有贏得任何獎品,但它沒有錯。有太多的方法可以做到這一點,乾淨的方式不是簡短的方式。在構造函數中創建數組時它很乾淨。當您通過解析Name屬性來使用字符串輸入時,它很短。 –