注册 登录
编程论坛 C# 论坛

未处理的ArgumentOutOfRangeException的错误 求大神助攻

浪里白条111 发布于 2017-04-12 21:47, 2522 次点击
private void Form3_Load(object sender, EventArgs e)
        {
            int flagNum = 0;
            string StrDataSetName = "";
            flagNum = (this.mainform.cmbLayerName.Text.IndexOf("@"));
            StrDataSetName = this.mainform.cmbLayerName.Text.Substring(0, flagNum);
            this.lblDataSetName.Text = StrDataSetName;

            soLayers layers = this.mainform.axSuperMap1.Layers;
            soLayer layer = layers[mainform.cmbLayerName.Text];
            soDataset objDt = layer.Dataset;
            objDt = layer.Dataset;
            soDatasetVector objDtv = (soDatasetVector)objDt;
            soRecordset objRd = objDtv.Query("", true, null, "");
            axSuperGridView1.Connect(objRd);
            axSuperGridView1.Update();

            //提取记录数目和字段值和数据集类型
            lblDataSetType.Text = objDt.Type.ToString();
            lblFieldCount.Text = objRd.FieldCount.ToString();
            lblRecordCount.Text = objRd.RecordCount.ToString();

            Marshal.ReleaseComObject(layers);
            layers = null;
            Marshal.ReleaseComObject(layer);
            layer = null;
            Marshal.ReleaseComObject(objDt);
            objDt = null;
            Marshal.ReleaseComObject(objDtv);
            objDtv = null;
            Marshal.ReleaseComObject(objRd);
            objRd = null;
        }
StrDataSetName = this.mainform.cmbLayerName.Text.Substring(0, flagNum);显示“System.ArgumentOutOfRangeException”类型的未经处理的异常在 mscorlib.dll 中发生 其他信息: 长度不能小于 0。的未处理的ArgumentOutOfRangeException的错误求大神解决
3 回复
#2
yhlvht2017-04-13 21:16
这个错误看起来应该是this.mainform.cmbLayerName.Text这个字符串中并不包含"@"字符,所以得到的flagNum值为-1
接着这句this.mainform.cmbLayerName.Text.Substring(0, flagNum) 相当于 this.mainform.cmbLayerName.Text.Substring(0, -1);当然会报错
#3
浪里白条1112017-04-14 19:26
那我是不是应该判断下?
#4
yhlvht2017-04-14 20:42
当然要判断啊
1