Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 这个VB计时器在没有声明的情况下是如何工作的?_C#_Vb.net_Timer - Fatal编程技术网

C# 这个VB计时器在没有声明的情况下是如何工作的?

C# 这个VB计时器在没有声明的情况下是如何工作的?,c#,vb.net,timer,C#,Vb.net,Timer,我正在将一个VB.NET应用程序翻译成C#.NET(虽然我知道C++,但我以前从未使用过这两种语言)。我大部分时间都在工作,但有一件事困扰着我。在VB中有一个函数 Private Sub timerReadCommands_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles timerReadCommands.Tick 但是timerReadCommands不会在任何地方声明。没有叫它的按钮,没有叫它

我正在将一个VB.NET应用程序翻译成C#.NET(虽然我知道C++,但我以前从未使用过这两种语言)。我大部分时间都在工作,但有一件事困扰着我。在VB中有一个函数

Private Sub timerReadCommands_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles timerReadCommands.Tick
但是
timerReadCommands
不会在任何地方声明。没有叫它的按钮,没有叫它的变量,VisualStudio说这个方法没有引用,我甚至试着检查另一个文件,看它是否在那里声明过。 这个VB应用程序(和方法)按预期工作,但在C版本中不工作。我想它必须在某个地方声明,但我就是找不到声明。在C#应用程序中,我尝试了

Timer timerReadCommands = new Timer();
声明它,这消除了未声明的变量错误,但该方法从未运行

我曾尝试通过谷歌搜索了解VB是如何工作的,以便在C#中模拟它,但我只从计时器不工作的人那里得到结果。我需要知道为什么我的是。或者,我需要知道如何让我的C#one工作

谢谢

用于创建计时器的C代码缺少VB中的以下摘录:

Handles timerReadCommands.Tick
C#不支持此功能,因此您需要在处理程序中添加第二行C#代码,通常在调用
InitializeComponent()的附近:

此外,必须在VB项目中的某个地方声明计时器,否则将无法编译
Handles
子句。如果可以在Visual Studio中加载VB项目,则应该能够右键单击
Handles
子句中的
timerReadCommands
文本,并从上下文菜单中选择转到定义;这将显示计时器的确切位置。。。可能是formname.designer.vb文件


设计器文件供Visual Studio使用和管理。它们的存在是为了将表单设计器创建的代码与您自己的代码分开,因此表单设计器不会过度编写或更改您想要保留的内容。您不应更改设计器文件中的任何内容。相反,您可以通过从工具箱拖动到窗体并给它起相同的名称来创建此计时器。

它可能在
.designer.vb
文件中声明。它将被声明为带有事件的
。VB使用该语法处理timerReadCommands。单击可将事件处理程序代码与事件关联。在C#中,需要显式地将处理程序分配给事件。timerReadCommands.Tick+=timerReadCommands\u Tick如果您仍然无法找到它,则必须在解决方案资源管理器顶部的工具栏上选择“显示所有文件”。VB隐藏它;C#没有。虽然史蒂夫的评论是你真正需要的。谢谢你,史蒂夫,做到了!作为将来的参考,我可以用谷歌搜索哪些术语来找到这个答案?madreflection,我找到了文件和声明。为什么它在那里而不是在同一个文件中?我怎么会发现它是我一个人的?谢谢你的帮助!计时器被视为“无UI控件”。您可以像其他控件一样将它们拖到表单中,但它们没有UI,因此它们显示在设计器底部的小“托盘”中。设计器中添加的所有控件都在.designer.[cs | vb]文件中声明,因为这就是它的用途。当您附加事件时,它会将
with events
添加到VB中的声明中,并在C#中的初始化中执行
+=
语法。
timerReadCommands.Click += new EventHandler(timerReadCommands_Tick);