不断收到此行的错误:
var imagePath = dataGrid1.SelectedItems[5].ToString();
指数超出范围。必须是非负数且小于集合的大小。参数名称:index
尝试将数据网格中的单元格存储在var / string中(它包含路径+文件名),以便我可以通过ftp将其删除。
private void button2_Click(object sender, RoutedEventArgs e)
{
var imagePath = dataGrid1.SelectedItems[5].ToString();
Student selected = dataGrid1.SelectedItem as Student;
if (selected == null)
MessageBox.Show("You must select a student");
else
{
if (MessageBoxResult.Yes == MessageBox.Show("Are you sure", "delete student",
MessageBoxButton.YesNo, MessageBoxImage.Warning))
{
FTPdelete(imagePath, "Administrator", "commando");
Class1.DeleteStudent(selected);
Window_Loaded(null, null);
}
}
}
private void FTPdelete(String imagePath, String inUsername, String inPassword)
{
var req = (FtpWebRequest)WebRequest.Create(imagePath);
req.Proxy = null;
req.Credentials = new NetworkCredential(inUsername, inPassword);
req.Method = WebRequestMethods.Ftp.DeleteFile;
req.GetResponse().Close();
}
}
}
答案 0 :(得分:1)
我认为你在SelectedItems和SelectedItem之间混淆了它 - SelectedItems should return a IEnumerable of the selected items - 看起来你正试图访问SelectedItem的一列。
如果学生有ImagePath,您可以稍微重新订购,只需:
Student selected = dataGrid1.SelectedItem as Student;
var imagePath = selected.ImagePath;