![]() |
1
20
我还可以放置一个布尔字段,该字段在窗体完全加载之前不设置为true,如果设置为false,则不处理事件,但这是一个肮脏的黑客行为。 这也是最简单和最好的方法! 假设.NET提供了一种简洁的方法,可以在加载表单之前关闭所有事件处理程序。即使只是你处理的那些。它仍然没有足够的灵活性来禁用您想要启用的,但是禁用您没有启用的。通常会发生窗体设置,并且您希望触发事件。同样,如果 不 事件发生了。 |
![]() |
2
28
为了使它稍微不那么脏,如果您在表单的构造函数中初始化控件,您可能可以使用表单
IsHandleCreated
属性而不是您自己的bool来检查它是否应该实际验证。
代码示例:
|
![]() |
3
3
简单的解决方案是声明一个初始化变量:
最复杂的:从方法中移除“手柄”,然后使用
|
![]() |
4
2
为了
对于数字上下,请这样做
关键字是
|
![]() |
5
1
另一种方式:
|
![]() |
6
0
我发现一件有用的事情是在加载表单后手动添加事件。 要做到这一点,您只需进入在该表单的设计器文件中找到的生成表单代码,并拉出添加事件的行。它看起来像这样:
然后将所有这些调用放入在窗体的构造函数中的InitializeComponent调用之后调用的方法中。 |
![]() |
7
0
为了防止任何人仍在搜索此项,初始化表单时将激发事件,但表单尚不可见,还应说明您有一个外键关系,在此关系上,您有一个默认值所需的问题,该问题也将在每行更新时激发。所以下面的代码对我有效……
|
![]() |
8
0
(使用vs 2017)在我看来,这是一个烦恼,但不是一个错误。与使用中的模型一致。事件是由代码的正常操作触发的,但我没有编写代码(但可以访问愚人害怕踩踏的地方),并且在正常流的前面似乎没有(合适的)位置来预测它。 最干净的答案似乎是,如果设计器中的单选按钮或复选框控件触发了任何重要的代码,则根本不选中它们。相反,在完成所有初始化之后,这些控件应该在加载事件(例如)中通过代码(例如,checked=true)进行更改。 这里没有失去灵活性,因为这两个都是在构建之前修复的,只是在不同的地方。事件处理程序将处理它,就像用户在设计良好的GUI应用程序的自然流中单击了控件一样。(这让我想起了一句古老的RPG谚语“不要逆周期而行”。(这里有人记得RPG吗?我不是面向IBM的团队的成员,从未使用过它,但与一些人进行了有趣的讨论。)预检查控件击中了vs循环的错误部分。) 如果出于任何不起作用的原因,下一个最好的方法是在其他地方建议使用kludge,在适当的时间将单个状态布尔值初始化为false并设置为true,在必要的位置设置条件出口,以防止它们崩溃。它能完成任务,但很难看。总比失败好。 另一件事是,在我决定设计师级别的预先设置检查是问题所在,还有一个非常可接受的选择,就是把危险点放在一个尝试中..捕获可以忽略异常。也是一个笨蛋。 |
![]() |
9
-2
也许对于某些功能,您可以使用Click事件而不是CheckChanged事件。 |
![]() |
10
-4
我在module1文件中放入了一个公共变量 dim public bolForm_loadingtf as boolean=true 在每次窗体加载事件中 BolForm_Loadingtf=真 在每个控件中,OnSelectedIndexChanged 如果BolForm_Loadingtf=true,则输入事件I,然后退出Sub 在窗体加载事件结束时 bolForm_loadingtf=假 我可能违反了一系列的规则,但这行得通 为了我。 |
![]() |
JOO · 使用udpClient从多个IP地址连续接收数据 3 年前 |
![]() |
Futterkiste · 函数比例图 3 年前 |
![]() |
user18789895 · 我应该如何验证WinForms应用程序? 3 年前 |
![]() |
beriscen · 如何使整个链接标签区域可点击? 3 年前 |
![]() |
lpmaxim · 当鼠标光标悬停在按钮上时,背景图像会移动 3 年前 |