Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.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 如何在vb.net中从文本框强制转换文本属性_Asp.net_Vb.net - Fatal编程技术网

Asp.net 如何在vb.net中从文本框强制转换文本属性

Asp.net 如何在vb.net中从文本框强制转换文本属性,asp.net,vb.net,Asp.net,Vb.net,我是这个网站的新手,我正在用VB.net编写代码。我需要清除表单中的所有文本框,但问题是.text属性不会弹出!我一直在读有关它的文章,解决方案似乎是使用Ctype来转换文本框。有人能帮我吗?我的方法的代码: Dim ctrl As Control For Each ctrl In Me.Controls If TypeOf ctrl Is TextBox Then ctrl.text = "" 'This is the

我是这个网站的新手,我正在用VB.net编写代码。我需要清除表单中的所有文本框,但问题是.text属性不会弹出!我一直在读有关它的文章,解决方案似乎是使用Ctype来转换文本框。有人能帮我吗?我的方法的代码:

 Dim ctrl As Control

        For Each ctrl In Me.Controls
            If TypeOf ctrl Is TextBox Then
                ctrl.text = "" 'This is the error, thanks!'
            End If
        Next
问题似乎在于textbox嵌套在一系列div元素下:这是我的html代码示例:

<div class="col-md-3"><!--Inicia primer contenedor-->
              <center><img src="../../Recursos/Imagenes/proveedor.png"/ class="rounded"></center>
               <h4>Opciones</h4>
               <asp:TextBox ID="tbBuscarProv" CssClass="form-control" runat="server"></asp:TextBox>
               <asp:Button ID="btBuscarProv" runat="server"  Width="100px" Text ="Buscar" CssClass="btn btn-primary btn-block" />
               <asp:Button ID="btNuevoProv" runat="server" Width="100px" Text="Nuevo" CssClass="btn  btn-primary btn-block" />
               <asp:Button ID="btLimpiarProv" runat="server" Width="100px" Text="Limpiar" CssClass="btn btn-primary btn-block" />
               <asp:Button ID="btCerrarProv" runat="server" Width="100px" Text="Cerrar" CssClass="btn  btn-primary btn-block" />
           </div><!--Termina contenedor de imagen y búsqueda (primer contenedor)-->

           <div class="col-md-9" id="Formulario" ><!---Inicia segundo contendor-->

               <div class="row"><!--Inicia la primera fila-->
                   <div class="col-md-4">
                       <div class="input-group input-group-sm">
                            <span class="input-group-addon">Id. Proveedor:</span>
                           <asp:TextBox ID="tbIdProveedor"  runat="server" CssClass="form-control" ></asp:TextBox>
                       </div>
                   </div>
               </div><!--Termina la primera fila-->
我也在使用BoostrapI。我不知道这是否会影响内部代码。请尝试使用DirectCast:

DirectCast(ctrl, TextBox).Text = ""
在不同数据类型之间进行转换时,CType更常用,而当要强制转换的对象与要强制转换到的类的类型相同、继承或实现时,则使用DirectCast

编辑:

尝试将if语句更改为:

If ctrl.GetType() Is GetType(TextBox) Then
使用此代码:

For Each Control In Me.Controls
    If Control.GetType() Is GetType(TextBox) Then
        CType(Control, TextBox).Clear
    End If
Next

在ASP.NET中,您应该使用Page.Controls而不是Me.Controls:

编辑:

更新了用于检查子控件内部的代码

编辑2:

备用代码:

For Each ctrl As Control In Page.Controls
    For Each subctrl As Control In ctrl.Controls
        If TypeOf subctrl Is TextBox Then
            DirectCast(subctrl, TextBox).Text = ""
        End If
    Next
    If TypeOf ctrl Is TextBox Then
        DirectCast(ctrl, TextBox).Text = ""
    End If
Next

解决了!!!因此,似乎因为我所有的控件都嵌套在几个div元素中,我们需要在代码中更加特殊,所以没有Me.controls或Page.controls,而是我使用了Form的名称,它工作得很好,下面是代码:

For Each ctrl As Control In FormProveedores.Controls
            If ctrl.GetType() Is GetType(TextBox) Then
                DirectCast(ctrl, TextBox).Text = ""
            End If
        Next

因此,在这段代码中,FormProveedores.Controls做到了这一点。非常感谢大家对本主题的支持,我今天学到了很多!:你好!,谢谢你的回复,我试着做一个测试,但是没有效果。。我用错了?为Me中的每个ctrl键设置ctrl键作为控件。控制ctrl的类型是否为TextBox,然后控制DirectCastctrl,TextBox。Text=End IfNext@AlexLlanez:它会抛出错误吗?另外,删除作为控制行的Dim ctrl。否,但文本不会变为空白example@AlexLlanez:更新了我的答案。对于Me.Controls.OfTypeOf TextBox tb中的每个tb As TextBox,我认为TextBox tb已经是一个TextBox类型,因此无需强制转换它。请转到项目属性并在编译标题下启用选项Strict。完成后,再次运行项目。它将以许多错误开始失败。你需要修理它们。至少应该是。文本而不是。文本。您应该始终启用Option Strict,它使您的执行速度提高了约20%,并且在编译时而不是在运行时显示了许多问题。顺便说一句,有一个默认设置可以打开它。工具->选项->项目和设置->VB默认值。欢迎来到SOTry,这段代码在我的点击方式下,也不起作用,我一直在想用老式的方式,一个控件一个控件地重置控件。但说实话,你们是一个了不起的社区,很高兴我加入了这个社区。@Alexlanez:我添加了另一个代码,也试试看另外,请使用Me.Controls和Page.Controls尝试这些代码。我们已经讨论了其中一个不起作用的可能性。两个选项都试一下,没有一个可行:我需要继续推进项目的其余部分,我们走了。当剩下的部分完成后,我将改进这部分代码,非常感谢您的帮助@好吧,但我还没有放弃!我目前没有访问计算机的权限。。。但当我这样做的时候,我会重建这个,看看我能不能让它工作:。-另外,这里有一个小提示给你,除非你已经这样做了:与其复制两次旧的时尚代码,把它全部放在一个sub中,即私有sub ResetControls,并在每次需要重置控件时调用该sub。诀窍是让div在服务器上运行,以便能够用代码@VisualIncent指向它,或者可能只是我的新手。是的,它必须在服务器端运行,以便代码背后的代码修改它。
For Each ctrl As Control In FormProveedores.Controls
            If ctrl.GetType() Is GetType(TextBox) Then
                DirectCast(ctrl, TextBox).Text = ""
            End If
        Next