问题 突然出现一个奇怪的问题

玻璃杯

知名会员
已加入
2019年11月22日
留言内容
126
编程经验
Beginner
您好,有人可以帮助我解决这个突然变得棘手的问题,老实说,我不知道这是怎么发生的,据我所知我根本没有做任何事情来造成这种情况,在我看来Visual Studio是坏了,但我确实修复了它,问题仍然存在。

突然在我的一个项目中,我的第二个表格无法正确显示。这是我使它看起来像的图片(它的中央有一个空的列表框):

形式Pic.jpg


它总是可以正常打开,看起来像这样,但是现在当我打开第二个窗体时(从编译的程序中,而不是在IDE中),它看起来像这样:

BokenFormPic.jpg


列表框控件不存在,也没有为它设置的任何属性,甚至没有它的大小。我也不会以任何奇怪的方式打开表格:

C#:
形式 HistoryForm = new Form();
HistoryForm.Show();

我猜您可能需要更多信息,但我不知道那是什么,请告诉我,我将其发布。

谢谢
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,523
地点
悉尼,澳大利亚
编程经验
10+
看代码。您正在创建一个实例 形式 类,而不是您自己的继承类 形式。我猜你的班级叫 历史记录表,在这种情况下,您的代码应如下所示:
C#:
历史记录表 form = new HistoryForm();

form.Show();
也许您想为变量命名更具体-甚至 historyForm -但至少使用正确的类型。同样,这样的局部变量实际上应该以小写字母开头。鉴于C#区分大小写,因此您可以在相同的上下文中使用相同的名称和不同的大小写。通常这不是您应该执行的操作,但是在如此狭窄的环境中,这可能还可以。
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,528
地点
弗吉尼亚州切萨皮克
编程经验
10+
我对此的第一反应是"哈!哈!哈! Windows Forms Designer损坏再次发作!"。这就是为什么Sheepings和我过去被烧了太多遍了,才手动编写我们的WinForms而不是WinFoms Designer的代码。

但是仔细检查,就像上面的jmcilhinney所说。只是碰巧实例化了错误的类。
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,523
地点
悉尼,澳大利亚
编程经验
10+
这就是为什么Sheepings和我过去被烧了太多遍了,才手动编写我们的WinForms而不是WinFoms Designer的代码。
我觉得那很奇怪。这些年来,我可能与设计师发生的任何问题对于我为所有表格进行手工编码所花费的时间都是很小的一部分。我知道并不是每个人都有相同的经验,但是据我所知,没有WinForms设计器问题。
 

玻璃杯

知名会员
已加入
2019年11月22日
留言内容
126
编程经验
Beginner
该死的,我猜对我来说没必要多加注意,这意味着我从最近正确的地方手动更改了它,完全忘记了。是的,这是脸部护理的时刻 -‍♂️

同样,也感谢您的命名技巧,我倾向于期望IDE为我自动建议命名规则,但是我会深入研究。
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,926
地点
英国
编程经验
10+
只是要清楚。当Winforms中发生设计器缺陷时,也没有已知的修复方法,这就是为什么我尝试鼓励人们改用WPF。

我知道并不是每个人都有相同的经验,但是据我所知,没有WinForms设计器问题。
你会弄错的仅仅因为您从未经历过,并不意味着它们不存在。如果您四处浏览设计器代码而破坏了整个表单而没有修复,则可以找到许多文章。但是,可以通过手工编码表单来避免这种情况。但是,在本主题中也不是这种情况。

关于您调用表格的方式。如果您的表单实际上命名为HistoryForm,这是正确的:
C#:
            HistoryForm form = new HistoryForm()
            form.Show();
这是不正确的:
C#:
            Form from2 = new Form2();
            from2.Show();
既不是 :
C#:
            Form HistoryForm = new Form();
            HistoryForm.Show();
您的表单未正确键入为Form2 form2 ...,已确认会导致操作员看到此问题。

尝试通过声明的名称而不是其类型,其后的新实例名称以及其实例来调用新实例化的对象,如第二篇文章中所述。
 

玻璃杯

知名会员
已加入
2019年11月22日
留言内容
126
编程经验
Beginner
WPF的确听起来像是公司没有,这是我第一次听到它。如果切换了,我将不得不重新学习什么?
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,926
地点
英国
编程经验
10+
Winforms与WPF |了解最重要的6个最不同之处

总体而言,在WPF中,您调用控件的某些方式与在Winforms中有所不同。例如在WPF中,您将使用Dispatcher.Invoke。尽管线程化的某些方面也有所不同。总体而言,WPF有很大的学习曲线,这与Winforms中的学习曲线不一样,而且确实需要一些习惯。 WPF中的几乎所有内容都不同,并且还带有全新的设计界面。使用Xaml构建UI,并且UI比Winforms更快,更现代且更稳定。 Winforms即将结束其EOL,并且实际上没有任何理由在WPF是一种选择的情况下,任何人都应该创建Winforms项目,在我看来,这显然是竞争者。
 

玻璃杯

知名会员
已加入
2019年11月22日
留言内容
126
编程经验
Beginner
等一下,这是创建UWP应用时使用的东西吗?我一直在研究这些内容,遵循教程之类的知识(但主要关注WinForms),如果这是同一件事,那么我肯定会学习它,我非常喜欢它。
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,528
地点
弗吉尼亚州切萨皮克
编程经验
10+
尽管WPF和UWP都使用XAML,但是从XAML生成并用于驱动UI的代码是两个完全不同的技术堆栈。 WPF主要使用托管代码和.NET Framework,而UWP运行于OS本机。

以下内容可能有用: WPF与UWP
 
最佳 底部