VB.NET MENUSTRIP在运行时并不尊重ImageScaling

时间:2018-03-15 18:04:51

标签: vb.net winforms menustrip

我正在尝试实施一个标记'有一个menustrip。

我有一张带红旗和黑旗的图像列表。

单击菜单项时,我想切换图像。 我遇到的问题是,一旦我改变图像,它就想做SizeToFit,这使得Icon大致成为文本的高度。我不想那样。我希望Image是它的实际大小。

我试过把这些陈述用不同的顺序,我试过的似乎没什么用。

目前,我在设计时将按钮设置为黑旗。  此代码显示我尝试更改为红旗。

 tsbFlagPatient.Image = ilFlags.Images(1)
 tsbFlagPatient.ImageScaling = ToolStripItemImageScaling.None
 tsbFlagPatient.DisplayStyle = ToolStripItemDisplayStyle.Image

[如果有更好的方法来切换图像,我会对此开放。这似乎是一个单独的问题。 ]

1 个答案:

答案 0 :(得分:0)

我无法使ImageScrolling工作。 由于我不需要文本,我使用BackGround Image并设置

BackgroundImageLayout = Stretch

这样可以使图像尺寸合适。 您可以打开AutoSize = false,然后手动设置高度,宽度以微调菜单的大小。

我确实重新考虑了ImageList并将图像更改为存储在项目资源中。这是切换图像的代码

Public Sub SetFlagImage(flagSet As Boolean)
    If flagSet = False Then
        btnFlag.BackgroundImage = My.Resources.appbar_flag_wavy_black
        btnFlag.BackgroundImage.Tag = "black"
    Else
        btnFlag.BackgroundImage = My.Resources.appbar_flag_wavy_red
        btnFlag.BackgroundImage.Tag = "red"
    End If
End Sub

这对这里提出的问题没有影响。通常,可能比拥有图像列表更好,因为所有表单都可以访问它。