无法在继承/子Windows窗体(Visual Basic)中进行更改 [英] Cant make Changes in inherited/child Windows Form (Visual Basic)
问题描述
我有一个模板Windows窗体和一个继承模板的子窗体。
I have an template Windows Form and an child Form which Inherits the template.
但是我无法在孩子的设计器中进行任何更改。
But I cannot make any Changes in the Designer of the child.
我使用的是Visual Studio 2015社区版
I am using Visual Studio 2015 Community Edition
.vb
Public Class Form1
Private isMouseDown As Boolean = False
Private mouseOffset As Point
' Left mouse button pressed
Private Sub Move_MouseDown(sender As Object, e As MouseEventArgs) Handles TableLayoutPanel2.MouseDown, PictureBox2.MouseDown, PictureBox1.MouseDown
If e.Button = MouseButtons.Left Then
' Get the new position
Dim mouseRelative As Point = Me.PointToClient(Cursor.Position)
mouseOffset = New Point(-mouseRelative.X, -mouseRelative.Y)
' Set that left button is pressed
isMouseDown = True
End If
End Sub
' MouseMove used to check if mouse cursor is moving
Private Sub Move_MouseMove(sender As Object, e As MouseEventArgs) Handles TableLayoutPanel2.MouseMove, PictureBox2.MouseMove, PictureBox1.MouseMove
If isMouseDown Then
Dim mousePos As Point = Control.MousePosition
' Get the new form position
mousePos.Offset(mouseOffset.X, mouseOffset.Y)
Me.Location = mousePos
End If
End Sub
' Left mouse button released, form should stop moving
Private Sub Move_MouseUp(sender As Object, e As MouseEventArgs) Handles TableLayoutPanel2.MouseUp, PictureBox2.MouseUp, PictureBox1.MouseUp
If e.Button = MouseButtons.Left Then
isMouseDown = False
End If
End Sub
End Class
.Designer.vb
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class Form1
Inherits System.Windows.Forms.Form
'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Wird vom Windows Form-Designer benötigt.
Private components As System.ComponentModel.IContainer
'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
<System.Diagnostics.DebuggerStepThrough()>
Private Sub InitializeComponent()
Dim Panel1 As System.Windows.Forms.Panel
Dim TableLayoutPanel1 As System.Windows.Forms.TableLayoutPanel
Me.Panel2 = New System.Windows.Forms.Panel()
Me.Panel3 = New System.Windows.Forms.Panel()
Me.TableLayoutPanel2 = New System.Windows.Forms.TableLayoutPanel()
Me.PictureBox1 = New System.Windows.Forms.PictureBox()
Me.PictureBox2 = New System.Windows.Forms.PictureBox()
Panel1 = New System.Windows.Forms.Panel()
TableLayoutPanel1 = New System.Windows.Forms.TableLayoutPanel()
Me.TableLayoutPanel2.SuspendLayout()
TableLayoutPanel1.SuspendLayout()
CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.PictureBox2, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'Panel2
'
Me.Panel2.BackColor = System.Drawing.Color.FromArgb(CType(CType(55, Byte), Integer), CType(CType(129, Byte), Integer), CType(CType(175, Byte), Integer))
Me.Panel2.Dock = System.Windows.Forms.DockStyle.Fill
Me.Panel2.Location = New System.Drawing.Point(0, 343)
Me.Panel2.Margin = New System.Windows.Forms.Padding(0)
Me.Panel2.Name = "Panel2"
Me.Panel2.Size = New System.Drawing.Size(534, 19)
Me.Panel2.TabIndex = 1
'
'Panel3
'
Me.Panel3.BackColor = System.Drawing.Color.FromArgb(CType(CType(193, Byte), Integer), CType(CType(193, Byte), Integer), CType(CType(193, Byte), Integer))
Me.Panel3.Dock = System.Windows.Forms.DockStyle.Fill
Me.Panel3.Location = New System.Drawing.Point(0, 329)
Me.Panel3.Margin = New System.Windows.Forms.Padding(0)
Me.Panel3.Name = "Panel3"
Me.Panel3.Size = New System.Drawing.Size(534, 14)
Me.Panel3.TabIndex = 2
'
'TableLayoutPanel2
'
Me.TableLayoutPanel2.BackColor = System.Drawing.Color.FromArgb(CType(CType(55, Byte), Integer), CType(CType(129, Byte), Integer), CType(CType(175, Byte), Integer))
Me.TableLayoutPanel2.ColumnCount = 2
Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
Me.TableLayoutPanel2.Controls.Add(Me.PictureBox1, 0, 0)
Me.TableLayoutPanel2.Controls.Add(Me.PictureBox2, 1, 0)
Me.TableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill
Me.TableLayoutPanel2.Location = New System.Drawing.Point(0, 0)
Me.TableLayoutPanel2.Margin = New System.Windows.Forms.Padding(0)
Me.TableLayoutPanel2.Name = "TableLayoutPanel2"
Me.TableLayoutPanel2.RowCount = 1
Me.TableLayoutPanel2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
Me.TableLayoutPanel2.Size = New System.Drawing.Size(534, 63)
Me.TableLayoutPanel2.TabIndex = 4
'
'Panel1
'
Panel1.Dock = System.Windows.Forms.DockStyle.Fill
Panel1.Location = New System.Drawing.Point(0, 63)
Panel1.Margin = New System.Windows.Forms.Padding(0)
Panel1.Name = "Panel1"
Panel1.Size = New System.Drawing.Size(534, 266)
Panel1.TabIndex = 5
'
'TableLayoutPanel1
'
TableLayoutPanel1.ColumnCount = 1
TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
TableLayoutPanel1.Controls.Add(Panel1, 0, 1)
TableLayoutPanel1.Controls.Add(Me.Panel2, 0, 3)
TableLayoutPanel1.Controls.Add(Me.Panel3, 0, 2)
TableLayoutPanel1.Controls.Add(Me.TableLayoutPanel2, 0, 0)
TableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill
TableLayoutPanel1.Location = New System.Drawing.Point(0, 0)
TableLayoutPanel1.Name = "TableLayoutPanel1"
TableLayoutPanel1.RowCount = 4
TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 17.5!))
TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 73.5!))
TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 4.0!))
TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 5.0!))
TableLayoutPanel1.Size = New System.Drawing.Size(534, 362)
TableLayoutPanel1.TabIndex = 0
'
'PictureBox1
'
Me.PictureBox1.Anchor = System.Windows.Forms.AnchorStyles.Left
Me.PictureBox1.Image = Global.WindowsApplication2.My.Resources.Resources.Logo
Me.PictureBox1.Location = New System.Drawing.Point(3, 3)
Me.PictureBox1.Name = "PictureBox1"
Me.PictureBox1.Size = New System.Drawing.Size(261, 57)
Me.PictureBox1.TabIndex = 0
Me.PictureBox1.TabStop = False
'
'PictureBox2
'
Me.PictureBox2.Anchor = System.Windows.Forms.AnchorStyles.Right
Me.PictureBox2.Image = Global.WindowsApplication2.My.Resources.Resources.Image
Me.PictureBox2.Location = New System.Drawing.Point(355, 6)
Me.PictureBox2.Name = "PictureBox2"
Me.PictureBox2.Size = New System.Drawing.Size(176, 50)
Me.PictureBox2.TabIndex = 1
Me.PictureBox2.TabStop = False
'
'Form1
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.BackColor = System.Drawing.SystemColors.ControlLightLight
Me.ClientSize = New System.Drawing.Size(534, 362)
Me.Controls.Add(TableLayoutPanel1)
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
Me.Name = "Form1"
Me.Text = "Form1"
Me.TableLayoutPanel2.ResumeLayout(False)
TableLayoutPanel1.ResumeLayout(False)
CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.PictureBox2, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
End Sub
Friend WithEvents Panel2 As Panel
Friend WithEvents Panel3 As Panel
Friend WithEvents TableLayoutPanel2 As TableLayoutPanel
Friend WithEvents PictureBox1 As PictureBox
Friend WithEvents PictureBox2 As PictureBox
End Class
儿童
.vb
Public Class Form2
Inherits WindowsApplication2.Form1
End Class
.Designer.vb
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class Form2
Inherits WindowsApplication2.Form1
'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
MyBase.Dispose(disposing)
End Sub
'Wird vom Windows Form-Designer benötigt.
Private components As System.ComponentModel.IContainer
'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.SuspendLayout()
'
'Form2
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.ClientSize = New System.Drawing.Size(534, 362)
Me.Name = "Form2"
Me.ResumeLayout(False)
End Sub
End Class
推荐答案
已解决:
要使Visual Inheritance工作,必须进行以下更改:
(Path指控制树路径 )
Solved:
For Visual Inheritance to work following Changes has to be done: ("Path" refers to the "Controls Tree Path")
路径中的所有控件必须具有生成成员
- 属性已禁用 ,除了最后一个必须启用。
All Controls in the Path have to have the Generate Member
-Property disabled, except the last one for which it has to be enabled.
路径中的所有控件必须具有修改
-Property设置为受保护的
,受保护的朋友
或公开
。
All Controls in the Path have to have the Modify
-Property set to Protected
, Protected Friend
or Public
.
这篇关于无法在继承/子Windows窗体(Visual Basic)中进行更改的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!