2015-10-26 52 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