精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
在VS解决方案窗口里打开某个窗体,在cs上右键点击视图设计器出如下错误:
提示:若要在加载设计器前避免可能发生的数据丢失,必须纠正以下错误:
类名“?”不是该语言的有效标识符。
调用堆栈:
在 Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomParser.CodeTypeDeclarationFromCodeClass(CodeClass vsClass)
在 Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomParser.OnNamespacePopulateTypes(Object sender, EventArgs e)
在 System.CodeDom.CodeNamespace.get_Types()
在 Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomParser.Parse(TextReader codeStream)
在 Microsoft.VisualStudio.Design.Serialization.CodeDom.MergedCodeDomParser.System.CodeDom.Compiler.ICodeParser.Parse(TextReader stream)
在 System.CodeDom.Compiler.CodeDomProvider.Parse(TextReader codeStream)
在 Microsoft.VisualStudio.Shell.Design.Serialization.CodeDom.CodeDomDocDataAdapter.get_CompileUnit()
在 Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager serializationManager)
在 System.ComponentModel.Design.Serialization.BasicDesignerLoader.BeginLoad(IDesignerLoaderHost host)
原因很简单,代码cs文件里多了个},让{}不对应,导致有些事件方法识别不了就出这问题了。比如:
void InitClassScheBCView()
{
// List<string> lstsche = new List<string>();
// ClassSche.GetCurrDayScheSubjectLst(lstsche);
// foreach (string sin in lstsche)
// {
// TreeNode tnsub = new TreeNode(sin);
// classschetreeView.Nodes.Add(tnsub);
string srealdir = TeachingFileSystem.sBoardContentPath;
DirectoryInfo TheFolder = new DirectoryInfo(srealdir);
foreach (FileInfo NextFile in TheFolder.GetFiles())
{
if (NextFile.CreationTime.Date == DateTime.Now.Date)
{
if (NextFile.Name.IndexOf(".bc") > 0 && NextFile.Name.IndexOf("boardcontent") >= 0)//bc是扩展名
{
filelistBox.Items.Add(NextFile.Name);
}
}
}
}
}
带下划线的}是多余的,删除就可以解决VS打不开窗体设计器问题。
我关闭VS再打开,还是不行,后来想了自己有这样的改动,才明白是多了}。