Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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
C# 从sting列表中删除字符串时遇到问题_C#_List - Fatal编程技术网

C# 从sting列表中删除字符串时遇到问题

C# 从sting列表中删除字符串时遇到问题,c#,list,C#,List,我想从列表中删除一个项目 我显然遗漏了一些东西…我尝试了几乎所有的变化,包括除了,删除,等等 调试时,我会一步一步地执行每个命令,但当它到达btnRemove_单击时,它会一步一步地执行删除操作,但不会删除任何内容…它的行为就像我从未发送过删除任何内容的命令一样 救命啊 公共部分类frmUpdate:表单 { 私立学生=新生(); 私人字符串(u)分数;; 公共frmUpdate() { 初始化组件(); } 公共字符串GetUpdatedScores(学生) { txtName.Text=s.

我想从列表中删除一个项目

我显然遗漏了一些东西…我尝试了几乎所有的变化,包括除了,删除,等等

调试时,我会一步一步地执行每个命令,但当它到达btnRemove_单击时,它会一步一步地执行删除操作,但不会删除任何内容…它的行为就像我从未发送过删除任何内容的命令一样

救命啊

公共部分类frmUpdate:表单
{
私立学生=新生();
私人字符串(u)分数;;
公共frmUpdate()
{
初始化组件();
}
公共字符串GetUpdatedScores(学生)
{
txtName.Text=s.Name;
_分数=s.分数;
填写学生成绩();
this.ShowDialog();
返回(u)分数;;
}
私立学校学生成绩()
{
lstScores.Items.Clear();
string[]grades=splitGrades(_分数);
foreach(以等级表示的字符串s)
{
lstScores.Items.Add(s.ToString());
}       
}
私有void lstScores\u SelectedIndexChanged(对象发送方,事件参数e)
{
int i=lstScores.SelectedIndex;
}
私有void btnAdd_单击(对象发送者,事件参数e)
{
frmAddScore addScore=新frmAddScore();
_分数+=“”+addScore.addScore();
填写学生成绩();
}
私有void b更新\单击(对象发送者,事件参数e)
{
int i=lstScores.SelectedIndex;
}
私有void btnRemove_单击(对象发送者,事件参数e)
{
int i=lstScores.SelectedIndex;
}
私有void btnRemove_单击(对象发送者,事件参数e)
{
如果(lstScores.SelectedIndex<0)
{
Show(“您必须选择一个等级”);
btnUpdate.Focus();
}
其他的
{
int i=lstScores.SelectedIndex;
string[]grades=splitGrades(_分数);
string message=“是否确实要删除”+grades[i].ToString()+“?”;
DialogResult button=MessageBox.Show(消息“确认删除”,
MessageBoxButtons.YesNo);
如果(按钮==DialogResult.Yes)
{
整数计数=0;
foreach(等级[i]中的字符c)
{
if(字符IsDigit(c))
{
计数++;
}
}
INTA=_scores.IndexOf(grades[i].ToString());
_分数=_分数。删除(a,(计数+1));
填写学生成绩();
btnOk.Focus();
}
其他的
{
btnOk.Focus();
}
}
}
私有void btnclearl\u单击(对象发送者,事件参数e)
{
}
私有无效btnOk_单击(对象发送者,事件参数e)
{
student.Name=txtName.Text;
学生分数=_分数;
这个。关闭();
}
私有void btnExit\u单击(对象发送者,事件参数e)
{
这个。关闭();
}
公共字符串[]拆分等级(字符串s)
{
字符串[]等级=s.Split(“”);
返回等级;
}
}
在C#中,字符串是不可变的<代码>\u分数。删除(i)不会更改
\u分数
。相反,它会返回一个新的字符串对象,您可以将其分配给变量,例如,返回到
\u scores
,如下所示:

_scores = _scores.Remove(i);

您需要使用RemoveAt方法-当您试图删除索引而不是值时

您确定SelectedIndex>0您需要指定索引位置查看
\u分数=\u分数。删除(i)
Edward提供了一个准确的例子是的,非常确定selectedindex…但是我可以添加一个if语句,以确保在lstbox中选择了一个等级…更新以确保列表项已被选中…我认为这使我朝着正确的方向前进…但是现在当我更新分数时,它会清除除“7”之外的所有分数。。。???我将编辑上面显示修订代码的代码…@Jerry:String.Remove的单参数重载删除字符串末尾索引处的所有字符。使用接受两个参数的重载指定要删除的字符数。差不多了…(谢谢)…现在我无法从列表中删除正确的字符串…分隔符是一个空格,因此我有一个计数+1来删除字符串和后面的空格…但我似乎总是删除列表中的第二项。。。?我已经更新了上面的代码…谢谢你,爱德华…你让我走上了正确的道路并找到了解决方案…我相信随着我的进步,我会找到更干净、更流畅的方法来编写代码。。。
_scores = _scores.Remove(i);