C#方法因未知原因无法运行
我目前正在上编程课,学习C#。我的一项任务是让一个程序运行在一个图形用户界面上,该界面有一个用于输入的文本框,一个用于输出的文本框,以及一个复制“输入”文本框中的任何数字并将其粘贴到输出文本框中的按钮。出于某种原因,C#方法因未知原因无法运行,c#,user-interface,C#,User Interface,我目前正在上编程课,学习C#。我的一项任务是让一个程序运行在一个图形用户界面上,该界面有一个用于输入的文本框,一个用于输出的文本框,以及一个复制“输入”文本框中的任何数字并将其粘贴到输出文本框中的按钮。出于某种原因,computeBtn\u Click方法,即读取输入中的数字并将其放入输出中的方法,对我来说完全没有任何作用,但通过使用方法名称computeBtn\u Click\u 1,效果非常好。知道为什么吗 这是我的代码(没有使用所有的.System文件): 命名空间Windows窗体应用程
computeBtn\u Click
方法,即读取输入中的数字并将其放入输出中的方法,对我来说完全没有任何作用,但通过使用方法名称computeBtn\u Click\u 1
,效果非常好。知道为什么吗
这是我的代码(没有使用所有的.System文件):
命名空间Windows窗体应用程序1
{
公共部分类Form1:Form
{
公共表格1()
{
初始化组件();
}
private void exitToolStripMenuItem\u单击(对象发送者,事件参数e)
{
}
//exitToolStripMenuItem1方法
//用途:关闭窗口并终止应用程序。
//参数:生成事件的对象和事件参数。
//退货:无
void exitToolStripMenuItem1\u单击(对象发送者,事件参数e)
{
这个。关闭();
}
//关于ToolStripMenu方法
//目的:提供有关申请的信息。
//参数:生成事件的对象和事件参数。
//退货:无
void About ToolStripMenuItem\u单击(对象发送者,事件参数e)
{
MessageBox.Show(“Name\nCS1400\nLab#4”);
}
私有void inTxtBox_TextChanged(对象发送方,事件参数e)
{
}
私有void outTxtBox_TextChanged(对象发送方,事件参数e)
{
}
//由于某种原因,这种方法不起作用。
//计算机点击法
//目的:从用户处获取值并再次显示
//参数:发送对象和事件参数
//退货:无
/*私有void计算单击(对象发送方,事件参数e)
{
int num=int.Parse(inTxtBox.Text);
stringoutsr=string.Format(“{0:D}”,num);
Text=outtr;
}*/
//计算机单击1方法
//目的:从用户处获取值并再次显示
//参数:发送对象和事件参数
//退货:无
私有无效计算单击1(对象发送方,事件参数e)
{
int num=int.Parse(inTxtBox.Text);
stringoutsr=string.Format(“{0:D}”,num);
Text=outtr;
}
}
} 您的
EventHandler
委托未在分部类中设置为调用computeBtn\u单击
我所说的分部类是指Form1.Designer.cs
,它可能是这样的
private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(105, 30);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(170, 74);
this.button1.TabIndex = 0;
this.button1.Text = "button1";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.computeBtn_Click);
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(284, 261);
this.Controls.Add(this.button1);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
}
尝试此操作,单击按钮时将调用您的方法
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.button1.Click += new System.EventHandler(computeBtn_Click);
}
创建事件处理程序时,VisualStudio会自动指定名称。因此,在您的示例中,有一个名为computeBtn
的按钮。然后在图形设计器中为单击事件创建事件处理程序。VS自动为其创建名称:computeBtn\u单击
现在,如果在图形设计器中您决定删除事件处理程序(例如,在按钮的“属性”选项卡中),则没有任何内容连接到Click事件,但名为computeBtn\u Click
的方法仍保留在类中。那么,如果您决定为Click事件创建一个事件处理程序,会发生什么呢?IDE将创建一个新方法,因为已经有了名为computeBtn_Click的东西,它将修改新方法的名称,所以它仍然是唯一的。在这种情况下,会导致计算单击1
要确认这一点,可以检查不起作用的方法的引用。它将显示代码中没有对该方法的引用。要查看引用,请单击该方法的名称并按Ctrl+K、R或使用上下文菜单。其他两个答案都很好,但我想我可能会添加另一种简单的方法来避免这种情况。当您在设计器中选择按钮时,转到“属性”窗口,您将在那里找到一个名为“事件”的选项卡。在“单击”下,您可以选择要用于按钮单击事件的方法。我打赌您以前有一个名称相同的按钮,该按钮曾一度被删除。当您添加另一个同名按钮时,它会创建一个带有索引/下标的新名称。感谢您自动生成的代码。computeBtn Click事件是否连接到该控件(查看控件属性窗口的事件选项卡),您正在随机添加事件处理程序。小心双击。了解如何使用属性窗口,点击闪电图标查看事件处理程序。明白了。在检查事件中的Click属性后,它被设置为computeBtn\u Click\u 1。另外,这是我不久前做的一个赋值,此后我停止为表单中的所有内容添加事件处理程序。当时,我认为我也必须为文本框这样做,因为我得到了一个错误,我认为这与某种原因有关。谢谢。在检查事件中的Click属性后,它被设置为computeBtn\u Click\u 1。谢谢
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.button1.Click += new System.EventHandler(computeBtn_Click);
}