2015-10-26 50 views
0

改變我對這些話{自動調整大小,正常,StretchImage,CenterImage,縮放}汽車的SizeMode屬性從一個PictureBox

列表首先我的用戶會從列表中選擇一個項目後,我需要改變屬性我的圖片框的SizeMode作爲他們的選擇。

我可以做什麼而不使用if/switch-case語句嗎?

If (size_mode_list.SelectedText = "AutoSize") Then 
    picture_box.SizeMode = PictureBoxSizeMode.AutoSize 
ElseIf (size_mode_list.SelectedText = "Normal") Then 
    picture_box.SizeMode = PictureBoxSizeMode.Normal 
ElseIf (size_mode_list.SelectedText = "StretchImage") Then 
    picture_box.SizeMode = PictureBoxSizeMode.StretchImage 
ElseIf (size_mode_list.SelectedText = "CenterImage") Then 
    picture_box.SizeMode = PictureBoxSizeMode.CenterImage 
ElseIf (size_mode_list.SelectedText = "Zoom") Then 
    picture_box.SizeMode = PictureBoxSizeMode.Zoom 
End If 

回答

3

Can i make something without use of if/switch-case statements

的一種方法是用枚舉名填寫CBO:

cbo.Items.AddRange([Enum].GetNames(GetType(PictureBoxSizeMode))) 

然後解析結果:

pb.SizeMode = CType([Enum].Parse(GetType(PictureBoxSizeMode), cbo.Text), 
     PictureBoxSizeMode) 

使用.TextSelectedItem.ToString()和CBO應該是一個DropDownList,因此用戶不能輸入。

您也可以編寫一個小的Name-ValuePair class以將名稱和值存儲到列表,然後使用ValueMember屬性來設置大小模式,以便使用Enum值而不是名稱。

+0

此外,我沒有看到我的結果沒有再次設置圖像路徑。我嘗試使用PictureBox.refresh(),但沒有。 – gtzinos

+1

這可能取決於你如何設置圖像....它適用於我。可能應該用這些細節提出一個新問題。 – Plutonix

+0

非常感謝你。一切工作正常! – gtzinos