gpt4 book ai didi

c# InvalidArgument= '-1' 的值对于 'index' 无效

转载 作者:行者123 更新时间:2023-12-03 09:13:07 29 4
gpt4 key购买 nike

我有一个 cmbPlace(组合框),它的项目自动填充了 System.IO 驱动器(C:\、D:\等)。同时它也有验证事件。代码如下:

using System.IO;
public FNamefile()
{
InitializeComponent();
DriveInfo[] allDrives = DriveInfo.GetDrives();
foreach (DriveInfo d in allDrives)
{
cmbPlace.Items.Add(d.Name);
}
}

private void FNamefile_Load(object sender, EventArgs e)
{
errorProvider1.ContainerControl = this;
}

private bool ValidatePlace()
{
bool bStatus = true;
int m = cmbPlace.SelectedIndex;
if ((cmbPlace.Items[m]).ToString() == cmbPlace.Text)
{
errorProvider1.SetError(cmbPlace, "");
}
else if (cmbPlace.Text == "" || (cmbPlace.Items[m]).ToString() != cmbPlace.Text)
{
errorProvider1.SetError(cmbPlace, "Please enter a valid location");
bStatus = false;
}
return bStatus;
}
private void cmbPlace_Validating(object sender, CancelEventArgs e)
{
ValidatePlace();
int m = cmbPlace.SelectedIndex;

if ((cmbPlace.Items[m]).ToString() == cmbPlace.Text)
{ }
else
{
cmbPlace.Focus();
}
}

问题是当我尝试测试验证 errormessage1 和 cmbPlace.Focus() (如输入“null”或“不在索引”文本中)时,它们不会触发并显示错误

InvalidArgument=Value of '-1' is not valid for 'index'. Parameter name: index

这是导致错误的行/代码,位于 ValidatePlacecmbPlace_Validating

if ((cmbPlace.Items[m]).ToString() == cmbPlace.Text)

最佳答案

正如我在评论中发布的,当没有选择任何项目时,SelectedIndex 属性返回 -1,这是按索引访问数组元素的无效索引(使用 cmbPlace.Items[ m])。也就是说,您需要在访问所选元素之前进行检查:

if(cmbPlace.SelectedIndex >= 0)
{
// do something
}
else
{
// No item selected, handle that or return
}

关于c# InvalidArgument= '-1' 的值对于 'index' 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39945438/

29 4 0
文章推荐: ruby-on-rails - Jekyll:错误:无法构建网站,日期格式错误
文章推荐: powershell - 在 powershell 中写入 machine.config 文件
文章推荐: webpack - 在 webpack-dev-server 代理配置中进行代理上下文匹配时如何分配函数?
文章推荐: jquery - 如何使用 jQuery 将
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com