ASPX文件:
<asp:listbox id="listbox1" runat="server" Height="100px" Width="274px"></asp:listbox>
CS文件:
string aa = listbox1.Items[0].Text;for (int i = 0; i < this.listbox1.Items.Count; i++)
{
     aa += this.listbox1.Items[i].Text;
}提示:string aa = listbox1.Items[0].Text;索引超出范围
其实我是想获取所有的listbox1的项

解决方案 »

  1.   

    string aa = listbox1.Items[0].Text;
    该为
    string aa = "";
    不可以吗?
      

  2.   

    listbox1里面根本就没有值吧·~~
      

  3.   

    listbox1.Items.count等于多少。。你看看。。应该是0吧。。
      

  4.   

    listbox中内容为空,即没有,你在仔细检查一下吧
      

  5.   

    listbox1.Items.Count应该是等于0,所以出现“string aa = listbox1.Items[0].Text;索引超出范围”  异常。string aa="";
    for (int i = 0; i < this.listbox1.Items.Count; i++)
    {
      aa += this.listbox1.Items[i].Text;
    }
    就可以了。
      

  6.   

    listbox1里面没有条目,首先确定里面为什么没有东西
    有了东西应该就没问题了
      

  7.   

    如果items.count==0当然不存在listbox1.Items[0]了,最好Items[0]去之前,判断一下items.count是否大于0
      

  8.   


    最好再加上try{}catch{}finally{}
      

  9.   

    你这样初始化就不对了嘛明显没有考虑可能出现的exceptionstring aa = "";for (int i = 0; i < this.listbox1.Items.Count-1; i++)
    {
      aa += this.listbox1.Items[i].Text;
    }
      

  10.   

    string aa = "";for (int i = 0; i < this.listbox1.Items.Count; i++)
    {
         aa += this.listbox1.Items[i].Text.ToString();
    }关键是我listbox1里面有5个值的,可为什么this.listbox1.Items.Count会是0???
      

  11.   

    string aa = listbox1.Items[0].Text;
    这个之前,listbox1里面就没值吧
      

  12.   

    应该是赋值的问题了,我是通过下面的代码来赋值的:
    <script language="VBScript">     
            Function NewOption(s)     
                set NewOption=document.createElement("Option")
                NewOption.text=s
                NewOption.value=s
            End Function
            Sub SelectMutipleFiles
                With CommonDialog1
                    .DialogTitle="选择您要上传的文件"
                    .FileName=""
                    .MaxFileSize=1024*4
                    .Flags=&H200+&H80000
                    .Filter="*.kml"
                    .ShowOpen
                End With
                document.forms(0).listbox1.options.length=0
                dim FileNames,I
                FileNames=Split(CommonDialog1.FileName,Chr(0))
                If UBound(FileNames)=0 Then
                    document.forms(0).listbox1.options.add NewOption(FileNames(I))
                    Else
                    For I=1 To UBound(FileNames)
                        FileNames(I)=FileNames(0)& "\" & FileNames(I)
                        document.forms(0).listbox1.options.add NewOption(FileNames(I))
                    Next
                End if
            End Sub
        </script>
      

  13.   

    还有高手知道该怎么用我上面的代码对LISTBOX进行赋值
      

  14.   

    关键是服务端怎么获取该LISTBOX的值
      

  15.   

    没弄懂你想做什么ListBox在什么地方赋值的?客户端?你的思路本来就是错的。你看看在客户端有ListBox吗?服务器控件在传递到客户端之前,是要经过转化的(转化成相应的Html元素),而ListBox在客户端是不存在的。
      

  16.   

    在ASPX页面的代码:
    这里引用了一个控件
    <object classid="clsid:F9043C85-F6F2-101A-A3C9-08002B2F49FB" id="CommonDialog1" width="0" height="0"></object>
    这里是一个LISTBOX
    <asp:listbox id="guijilb" runat="server" Height="100px" Width="300px"><asp:ListItem Text="1"></asp:ListItem></asp:listbox>
    <br>     
    <input type="button" value="选择轨迹文件..." name="B3" onclick="VBScript:SelectMutipleFiles">通过VBSCRIPT代码选择多个文件,并把地址写入LISTBOX,VBSCRIPT代码如下:<script language="VBScript">     
            Function NewOption(s)     
                set NewOption=document.createElement("option")
                NewOption.text=s
                NewOption.value=s
            End Function
            Sub SelectMutipleFiles
                With CommonDialog1
                    .DialogTitle="选择您要上传的文件"
                    .FileName=""
                    .MaxFileSize=1024*4
                    .Flags=&H200+&H80000
                    .Filter="*.kml"
                    .ShowOpen
                End With
                document.forms(0).guijilb.options.length=0
                dim FileNames,I
                FileNames=Split(CommonDialog1.FileName,Chr(0))
                If UBound(FileNames)=0 Then
                    document.forms(0).guijilb.options.add NewOption(FileNames(I))
                    Else
                    For I=1 To UBound(FileNames)
                        FileNames(I)=FileNames(0)& "\" & FileNames(I)
                        document.forms(0).guijilb.options.add NewOption(FileNames(I))
                    Next
                End if
            End Sub
        </script>
    我的问题是CS文件中该如何获取LISTBOX的所有项的值????
      

  17.   

    楼主你贴的代码不全,你用客户端脚本给LISTBOX赋值以后,应该有个提交或者什么动作(比如某个控件的PostBack)才能把客户端选择的值给服务端的,客户端脚本无法直接操作服务器控件的,你是不是少了这段代码啊,你仔细看下。
      

  18.   

    代码是全了,我页面显示选择多个文件后可以将文件路径显示在LISTBOX里面
      

  19.   

    呵呵,刚才下面的回复没仔细看,果然是楼主没将客户端值传给服务端。楼主你在客户端看到的可不是服务端的LISTBOX控件啊,你这样做好了,你页面放几个隐藏的TEXTBOX控件和<input id="HiddenSaveButton" type="button" runat="server" onserverclick="HiddenSaveButton_ServerClick" style="display:none"/>,你的客户端脚本里加上一些代码,用来在选择了值后,相应的将值写到TEXTBOX中去,然后最后来个document.getElementById("HiddenSaveButton").click();然后CS文件里加上protected void HiddenSaveButton_ServerClick(object sender, EventArgs e){}这样就好了。
      

  20.   

    Response.Write(listbox1.Items.Count)看看是否为0
      

  21.   

    哦,只是记录文件路径啊。那用一个TEXTBOX就好了,要是有多个文件路径要记录就用某个字符(注意用文件路径用不到的符号)做分隔符好了,CS文件里的protected void HiddenSaveButton_ServerClick(object sender, EventArgs e){}方法用Split截取路径到个String[] filepath然后再做其他操作就好了。
      

  22.   

    如果不等于0的话,就到count-1试试