【问题标题】:Auto change the SizeMode property from a PictureBox自动更改 PictureBox 的 SizeMode 属性
【发布时间】:2016-01-24 23:49:21
【问题描述】:

我有一个包含这些词的列表 { 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

【问题讨论】:

    标签: vb.net winforms picturebox


    【解决方案1】:

    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 属性设置大小模式,这样您就可以使用枚举值而不是名称。

    【讨论】:

    • 另外,如果没有再次设置图像路径,我也没有看到我的结果。我尝试使用 PictureBox.refresh() ,但没有。
    • 这可能取决于您如何设置图像....它适用于我。可能应该就这些细节提出一个新问题。
    猜你喜欢
    • 2019-09-02
    • 1970-01-01
    • 2015-08-06
    • 1970-01-01
    • 2014-10-17
    • 1970-01-01
    • 1970-01-01
    • 2016-06-30
    • 2019-08-11
    相关资源
    最近更新 更多