看来,由于原因不明,我现在无法编辑DataGridView中的任何内容。 DGV的ReadOnly属性值为false,除了一个列之外的所有列都将ReadOnly属性设置为false。
我开始认为这可能是由于我尝试添加到我的一个类中的一个特殊值,一个我只想在类中修改,但仍然只读给公众。我认为这个价值并没有弄乱任何其他东西,但是,这是我的代码的相关部分:
private void loaderWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
loadingBar.Value = e.ProgressPercentage;
if (e.UserState != null)
{
savefiles.Add((SaveFile)e.UserState);
}
}
其中savefiles是BindingList,而SaveFile是我的类:
public class SaveFile
{
private string d_directory;
private int d_weirdnumber;
private bool d_isautosave;
private string d_fullname;
private string d_datatype;
private string d_owner;
private bool d_isquicksave;
private string d_title;
private string d_gametime;
public SaveFile() { }
public SaveFile(string directory, int weirdnumber, bool isautosave, string fullname, string datatype, string owner, bool isquicksave, string title)
{
d_directory = directory;
d_weirdnumber = weirdnumber;
d_isautosave = isautosave;
d_fullname = fullname;
d_datatype = datatype;
d_owner = owner;
d_isquicksave = isquicksave;
d_title = title;
}
public string Gametime
{
get { return d_gametime; }
}
public string Datatype
{
get { return d_datatype; }
set { d_datatype = value; }
}
public string Title
{
get { return d_title; }
set { d_title = value; }
}
public bool IsQuickSave
{
get { return d_isquicksave; }
set { d_isquicksave = value; }
}
public bool IsAutoSave
{
get { return d_isautosave; }
set { d_isautosave = value; }
}
public string Directory
{
get { return d_directory; }
set { d_directory = value; }
}
public string FullName
{
get { return d_fullname; }
set
{
d_fullname = value;
string[] split = value.Split(new char[]{'-'});
foreach (string str in split)
{
if (System.Text.RegularExpressions.Regex.IsMatch(str, "^\\d\\d:\\d\\d:\\d\\d$"))
{
d_gametime = str;
}
}
}
}
public int Weirdnumber
{
get { return d_weirdnumber; }
set { d_weirdnumber = value; }
}
public string Owner
{
get { return d_owner; }
set { d_owner = value; }
}
}
Gametime是我前面提到的特殊属性。它没有设定功能,但根据this,我应该是明确的,对吗?
有人可以告诉我为什么我可能无法编辑任何DGV细胞吗?
编辑我刚发现不将AutoGenerateColumns设置为false允许我再次编辑,但我仍然不知道原因。
答案 0 :(得分:3)
几个小时后,一位朋友终于通过远程桌面查看了它。他编写了一个函数来强制所有列都具有非只读状态,并且如图所示,它有效。所以我们在编辑器中查看了列属性,并以某种方式......我不知道为什么......它们都被设置为只读。我发誓我以前检查了4次。
这个故事的教训(我猜):如有疑问,请检查您的设置。毫无疑问,变得令人怀疑。否则,请向Microsoft提交错误报告:\