.Net中vb6.0帧控制的等价性是什么?面板或组合框?

时间:2010-03-07 10:50:45

标签: .net vb6

.Net中vb6.0帧控制的等价性是什么?面板或组框?

我记得在vb6.0中使用frame并禁用它(frame1.Enabled = False)并没有改变其中控件的前色。

2 个答案:

答案 0 :(得分:4)

你看过System.Windows.Forms.GroupBox吗?

This page可能对您有用。它解释了从VB6 Frame控件到较新的.NET控件的转换。

答案 1 :(得分:1)

在禁用控件时,如果禁止控件显示为禁用,则被视为可用性。没有什么比看到用户敲击鼠标按钮试图让程序做她认为可能做的事情。

Windows窗体不支持它,但你可以伪造它。您可以显示已启用控件的图像,与已禁用的控件重叠。在项目中添加一个新类并粘贴下面显示的代码。编译。将控件从工具箱顶部拖放到表单上并向其添加控件。通过按钮切换Enabled属性来尝试。

Public Class MyPanel
  Inherits Panel

  Private mFakeIt As PictureBox

  Public Shadows Property Enabled() As Boolean
    Get
      Return MyBase.Enabled
    End Get
    Set(ByVal value As Boolean)
      If value Then
        If mFakeIt IsNot Nothing Then mFakeIt.Dispose()
        mFakeIt = Nothing
      Else
        mFakeIt = new PictureBox()
        mFakeIt.Size = Size
        mFakeIt.Location = Location
        Dim bmp = new Bitmap(Width, Height)
        Me.DrawToBitmap(bmp, new Rectangle(0, 0, bmp.Width, bmp.Height))
        mFakeIt.Image = bmp
        Me.Parent.Controls.Add(mFakeIt)
        Me.Parent.Controls.SetChildIndex(mFakeIt, 0)
      End If
      MyBase.Enabled = value
    End Set
  End Property
End Class

请不要使用它。