Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net TexBox不会启用类型为“的捕获异常”;对象引用未设置为实例";_Asp.net_Vb.net_Checkbox_Textbox - Fatal编程技术网

Asp.net TexBox不会启用类型为“的捕获异常”;对象引用未设置为实例";

Asp.net TexBox不会启用类型为“的捕获异常”;对象引用未设置为实例";,asp.net,vb.net,checkbox,textbox,Asp.net,Vb.net,Checkbox,Textbox,我正在从事一个用Visual Basic编写的项目。我有一个复选框和e文本框,我想在选中复选框时启用文本框。 这是我的代码: Public Sub CheckBox3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox3.CheckedChanged Dim CheckBox3 As CheckBox = DirectCast(sender, Ch

我正在从事一个用Visual Basic编写的项目。我有一个复选框和e文本框,我想在选中复选框时启用文本框。 这是我的代码:

    Public Sub CheckBox3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox3.CheckedChanged

    Dim CheckBox3 As CheckBox = DirectCast(sender, CheckBox)
    convertToStaff = CheckBox3.Checked

    If CheckBox3.Checked = True Then
            test.Enabled = True
            convertToStaff = CheckBox3.Checked
            Session("convertToStaff") = convertToStaff
        End If

End Sub
这是我的前端代码

  <td style="width:100px; ">Staff:&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp                                                                          


  <asp:CheckBox ID="CheckBox3" runat="server" Checked="false" 
   AutoPostBack="True"   

    OnCheckedChanged="CheckBox3_CheckedChanged" />

     </td>
      <td style="width:200px; ">


      <asp:TextBox ID="test" runat="server" class="text_box" 
       Enabled="False"></asp:TextBox>

      </telerik:RadTextBox>

             </td>  
员工:

由于某些原因,我不理解行
test.Enabled=True
将抛出未设置为实例的Object Reference类型的异常


知道我哪里做错了吗?

1-进入设计师屏幕

2-通过单击您的rad文本框来选择它

3-在“属性”窗口中,拾取文本框的名称(可能类似于TextBox1或RadTextBox1)。在某处记下或用ctrl+c复制它

4-返回您的代码。调暗rad文本框时,将创建radtextbox。这不是你使用控件的方式。你想让它使用你刚才提到的文本框吗。因此,与前面的代码片段不同,请尝试以下操作:

If convertToStaff = True Then
    TheNameOfTheTextBoxYouNotedEarlier.Enabled = True

    Session("convertToStaff") = convertToStaff
End If

这将“瞄准”您在表单设计器中创建的文本框,即您可以在屏幕上看到的文本框。

我创建了一些基本代码,看看这是否对您有帮助

前端

<body>
    <form id="form1" runat="server">
        <table>
            <tr>
                <td>
                    <asp:CheckBox ID="CheckBox3" runat="server" Checked="false" AutoPostBack="true" Text="Check me"/>
                </td>
                <td>
                    <asp:TextBox ID="RadTextBox2" Width="100%" runat="server" CssClass="text_box" Enabled="false"/>
                </td>
            </tr>
        </table>
    </form>
</body>

您没有将文本框设置为启用状态,但实例化了一个完整的新文本框(
Dim RadTextBox2 As new RadTextBox
),并将其设置为启用状态。您在哪里存储对实际要启用的文本框的引用?@RenéVogt如果我将Dim RadTextBox2作为新RadTextBox删除,并在RadTextBox2中停止调试的文件的开头将其声明为Dim RadTextBox2作为RadTextBox。Enabled=True行。我不明白存储对文本框的引用是什么意思?你能发布你的前端吗?显然,您正在创建一个新的文本框,并启用它,但您根本没有将其绑定到前端。您是否希望在选中复选框后,此文本框显示在前端?我看到对
会话的调用
您确定没有使用asp.net或其他任何东西吗?我问这个问题也是因为
RadTextBox
是Telerik的一个常见web控件…@Juli如果你为整个项目启用,它是否显示了你可以纠正的问题?有可能(祈求好运)在那之后还能用。我想你指的是身份证吧?我试过如果convertToStaff=True,然后将Dim测试作为文本框测试。Enabled=True会话(“convertToStaff”)=convertToStaff End如果这是您的意思,但在执行test.Enabled=True时,它不起作用,停止调试并不执行任何操作。test是我的文本框的id*mean。我是说。当您调暗Sub中的文本框时,您将创建一个新的文本框。你看不到它,首先是因为你没有把它放在表单上,其次是因为它就像一个局部变量:它被包含在Sub的作用域中,然后随它一起消失。你的电脑运行Sub只需几分之一秒;即使你用编程的方式将新的文本框放在表单上,它也不会显示在你缓慢的人眼上。如果可以看到代码,但无法看到表单设计器,请尝试按shift+F7。右键单击所需控件并查看属性。你会明白的。我问你是因为我没有一个名为name only ID的属性,而在我主要工作的C#中,我们通过ID将元素作为目标。无论如何,谢谢你。我已经试过你的代码了,正如我出于某种原因告诉你的,当我试图执行enable rowYeah时,它让我摆脱了调试,它似乎是等效的。在我看来,这个错误似乎是你仍然调暗了你的文本框。不要那样做,它已经存在了。当您将Dim测试作为文本框编写时,您创建了一个名为“test”的文本框,并且默认情况下使用这个文本框,因为它更接近Sub的范围。这就是为什么它什么都不做。相反,使用test.Enabled=True而不使用Dim,您将访问表单的文本框(并且将能够声明胜利!)我不再按照您的建议对其进行Dim,我还更新了问题中的代码。问题是,现在TextBox.Enabled=True行抛出类型为“Object Reference not set to a instance”的异常。谢谢,我看不出与我的代码有多大区别,但我还是尝试了。由于某些原因,当执行RadTextBox2.Enabled=True时,它使我脱离调试,对我的textbox不做任何操作一件事,我从前端删除了OnSelectionChanged,只在后面的代码中处理它。你可能想在你的帖子中为#telerik添加一个标签,看看是否有人可以添加一些知识。我以为这就像普通的asp。顺便说一句,我发布的这段代码运行良好,并在回发时启用文本框。编辑:我说的是OnSelectioChanged…我的意思是OnCheckedChanged。将其从前端移除,并在后面的代码中保留“Handles CheckBox3.CheckedChanged”(在我的情况下)如果不在前端使用,则不会进入功能。无论如何,我将代码放入了一个try-catch中,看到启用的行抛出了一个类型为Object-reference的异常,而不是设置为对象的实例。
Partial Class _StackOverflowTest
    Inherits System.Web.UI.Page

    Public Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load

    End Sub

    Public Sub CheckBox3_CheckChanged(ByVal sender As Object, ByVal e As EventArgs) Handles CheckBox3.CheckedChanged
        If CheckBox3.Checked Then
            RadTextBox2.Enabled = True
        End If
    End Sub

End Class