从VB.NET过渡到C#2008。我真的学到了很多,但想问几个问题。
当我创建动态控件时,我需要向它们添加事件。所以我需要将这些事件插入到我的程序中。 IE ...
创建TextBox
,然后需要添加KeyUp
事件。我现在做的是在表单上放一个文本框,转到它的事件,双击我想要的事件,然后将函数重命名为我想要的,并从表单中删除文本框。
是否没有插入新功能(通过菜单或右键菜单?)或者是否可以学习所有参数?对象发送者非常简单,但EventArgs
更改。
TIA:} DPRoberts
答案 0 :(得分:0)
您可能需要了解delegates和lambda expressions。
这是一个可能有帮助的例子。
for(int k = 0; k < 5; k++)
{
TextBox tb = new TextBox();
tb.Name = "tb1";
tb.Click += (obj, evntArgs) =>
{
//This is your click event code for this text
};
}
希望这有帮助!
答案 1 :(得分:0)
我希望我这样做,我不经常使用论坛等。但我的回答是复杂的评论。
最后几条评论至少接近我的需要。我将在这里放一些代码来帮助解释。但!!!这不是一个编码问题,所以任何谈论它都无济于事!这是一个IDE问题我正在寻找一个菜单项或工具栏按钮,允许我插入一个新功能(已经知道事件的正确参数。)这里是一个实例:
TextBox txtTemp = new TextBox();
txtTemp.KeyUp += fnKeyUp_txtQtySent;
txtTemp.Font = fArial10;
txtTemp.Location = new Point(nXPos, nYPos);
txtTemp.Tag = sTag;
txtTemp.Text = dbRDR.GetInt32(1).ToString();
txtTemp.TextAlign = HorizontalAlignment.Center;
txtTemp.Width = 48;
pnlContracts_Open.Controls.Add(txtTemp);
现在,下一步是创建/插入fnKeyUp_txtQtySent函数/方法。我目前以两种方式之一进行,从另一个KeyUp事件剪切/粘贴或我上面解释的5-6步骤方式。是否有一个菜单路径将执行此IE(插入&gt;事件&gt; TextBox&gt; KeyUp。然后插入一个空白的KeyUp事件准备重命名和编码。
感谢所有人的努力,我多年来一直是VB 3,4,5,6程序员并休息了一下,大约6年前回到.NET。所以这是我没有学会如何正确做的少数事情之一。
:} DPR
答案 2 :(得分:0)
希望对此有所帮助。如果我理解正确,你想创建一个处理程序&#34;自动&#34;这样你就可以收到适当的事件参数。
当您输入对象的名称,然后输入事件的名称,然后是+=
:
TextBox.KeyUp +=
标签 标签
+=
部分后,按Tab键。这将创建一个具有正确参数类型的处理程序方法。
输入的另一个技巧,例如:
TextBox.KeyUp += (a, b) => { //this is an empty function block }
然后将鼠标悬停在a
和/或b
上,以查看其推断类型的工具提示。通常a
是object
(事件的发件人)而b
是EventArgs
的某个子类,但很多时候你甚至不需要使用反正的论点。
here you have a step-by-step指导如何实现事件和处理程序,以备不时之需。
答案 3 :(得分:0)
谢谢大家的努力,特别感谢Ronan!使用关键字&#34;生成方法&#34;来自罗南,我找到了我需要的东西。似乎VS 2008没有快捷键ctrl + K + M或右键菜单来执行此操作。我安装了VS 2012,他们都在那里。
因为我正在将VB语言改为C#,所以也可以轻松切换版本。经过多年的剪切/粘贴后,它看起来很棒。我找到了一个包含快捷方式列表的网页,上面提到的那个也没有出现在2015年,2012年和2013年。
再次感谢,我认为这个问题得到了解答。
:} DPRoberts