【问题标题】:Cant create 2nd textbox无法创建第二个文本框
【发布时间】:2010-06-14 22:48:56
【问题描述】:

我在使用此代码时遇到问题,我不知道为什么。它第一次运行良好,但第二次在此行出现“参数无效”错误:

Dim tbx As TextBox = New Windows.Forms.TextBox

完整代码如下:

Dim tbx As TextBox = New Windows.Forms.TextBox
tbx.Name = tbxName
tbx.Size = New System.Drawing.Size(55, 12)
tbx.BorderStyle = BorderStyle.None
tbx.TextAlign = HorizontalAlignment.Center
Using f As Font = tbx.Font
  tbx.Font = New Font(f.FontFamily, 8, FontStyle.Bold)
End Using
tbx.Location = New System.Drawing.Point(xCords, 44)
Select Case tbx.Name
  Case "tbxBulk01" : tbx.Text = Bulk01Label
  Case "tbxBulk02" : tbx.Text = Bulk02Label
End Select
Me.Controls.Add(tbx)

这是堆栈跟踪:

在 System.Drawing.Font.GetHeight(图形图形) 在 System.Drawing.Font.GetHeight() 在 System.Drawing.Font.get_Height() 在 System.Windows.Forms.Control.get_FontHeight() 在 System.Windows.Forms.TextBoxBase.get_PreferredHeight() 在 System.Windows.Forms.TextBoxBase.get_DefaultSize() 在 System.Windows.Forms.Control..ctor(布尔 autoInstallSyncContext) 在 System.Windows.Forms.TextBoxBase..ctor() 在 System.Windows.Forms.TextBox..ctor()

感谢任何帮助。

【问题讨论】:

  • 问题似乎出在您发布的 sn-p 周围的代码中。你什么时候第二次打电话?从哪里打电话?
  • 在我的主要 form_load 上,我有一个名为 WriteControl 的方法。对于我需要的每个文本框,我调用此方法并传入控件的名称和 xcoords。刚刚删除了我的大部分代码并替换为这个。 WriteControls("picBulk01", "tbxBulk01", 7) WriteControls("picBulk02", "tbxBulk02", 68) 第二次仍然出现同样的错误
  • 可能值得一提的是,我也用这种方法创建了一个图片框,但为了清楚起见没有包含代码。该部分似乎工作正常,将创建 2 个图片框。
  • 如果您可以发布一个最小的示例来编译并触发错误,这将有所帮助。
  • 好的简化版如下。在测试项目中仍然遇到同样的错误。

标签: vb.net winforms textbox


【解决方案1】:

我知道这是一个老问题,但这是我的答案。

我怀疑

USING .... END USING 部分也是如此。

我也刚刚在反馈中看到了,哦,好吧,没关系。

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim xCoords As Integer = 80
        Dim myTextBox As TextBox = New TextBox

        For index As Integer = 1 To 2
            myTextBox = New TextBox
            myTextBox.Name = "MyTextBox" & index.ToString
            myTextBox.Size = New System.Drawing.Size(55, 12)
            myTextBox.BorderStyle = BorderStyle.None
            myTextBox.TextAlign = HorizontalAlignment.Center
            myTextBox.Font = New System.Drawing.Font(myTextBox.Font.FontFamily, 8, FontStyle.Bold)
            myTextBox.Location = New System.Drawing.Point(index * xCoords, 44)
            Select Case index
                Case 1 : myTextBox.Text = "Bulk01Label"
                Case 2 : myTextBox.Text = "Bulk02Label"
            End Select
            Me.Controls.Add(myTextBox)
        Next

    End Sub
End Class

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-15
    • 2015-05-31
    • 1970-01-01
    • 2014-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多