我有一个包含这些单词的列表{AutoSize,Normal,StretchImage,CenterImage,Zoom}
首先,我的用户将从列表中选择一个项目,然后我需要将我的图片框的属性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
答案 0 :(得分: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)
使用.Text
或SelectedItem.ToString()
,cbo应该是DropDownList,因此用户无法输入内容。
您还可以编写一个小Name-ValuePair class来将名称和值存储到列表中,然后使用ValueMember
属性设置大小模式,这样您就可以使用枚举值而不是名称