-2

我正在处理一个涉及单击按钮的项目时遇到问题,并且文本应该显示在我创建的标签框中。我知道当我单击按钮时使用文本框显示文本会更容易,但我的导师希望我们使用标签而不是显示文本。我已经调试了项目,一切都说很好,但是当我单击底部的一个按钮时,文本不会显示在分配的标签中。下面是我正在使用的代码。也许我错过了一些东西。例如,当我点击客户关系按钮时,它应该在一个标签中显示部门,在下一个标签中显示联系人姓名,在下一个标签中显示电话号码。我希望这是足够的信息

private void btnCustomerRelations_Click(object sender, EventArgs e)
{
    lblDepartment.Text = "Customer Relations";
    lblContact.Text = "Tricia Smith";    
    lblPhone.Text = "500-1111";
}

private void btnMarketing_Click(object sender, EventArgs e)
{
    lblDepartment.Text = "Marketing";    
    lblContact.Text = "Michelle Tyler";    
    lblPhone.Text = "500-2222";    
}

private void btnOrderProcessing_Click(object sender, EventArgs e)    
{    
    lblDepartment.Text = "Order Processing";    
    lblContact.Text = "Kenna Ross";    
    lblPhone.Text = "500-3333";   
}

private void btnShipping_Click(object sender, EventArgs e)    
{    
    lblDepartment.Text = "Shipping";    
    lblContact.Text = "Eric Johnson";    
    lblPhone.Text = "500-4444";    
}
4

2 回答 2

2

Did the project compiled without any errors ?.

默认情况下,C# 中的每个事件处理程序都被声明为 void,我无法在您的代码中找到。您是否修改了 Visual Studio 生成的事件处理程序,如果是这种情况,那么您面临的问题就是因为这个。

让我解释一下出了什么问题;

每当您使用 Visual Studio 的属性窗口为任何控件创建事件处理程序时,为了便于说明,让我来解释一下。example of TextBox假设您有一个 TextBox(命名为 textBox1,这是默认值)并且您订阅了它TextChanged Event(这样做在 Visual Studio 的事件窗口中找到 TextChanged 事件并双击它,当您这样做时,Visual Studio 会为您生成此事件;

private void textBox1_TextChanged(object sender,EventArgs e)
{

}

这就是我们程序员所说的Event Handler,现在找到Solution Explorer Window in Visual Studio点击Form1.Designer.cs你会在那里得到很多代码,找到上面写着的行

private System.Windows.Forms.TextBox textBox1;

其中 textBox1 是控件的名称。在此点上方找到一个加号,单击它并找到以下代码;

// 
// textBox1
// 
this.textBox1.AcceptsReturn = true;
this.textBox1.Location = new System.Drawing.Point(478, 0);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(359, 23);
this.textBox1.TabIndex = 1;
this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);

PS:The Location , AcceptsReturn , Size and TabIndex property in yours might not be same as mine.

阅读这段代码的最后一行,它说;

this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);

如果textBox1_TextChanged is the name of event which must be same as that defined in Form1.cs.你修改它,你会得到各种编译时错误。

所以现在我想你知道Form1.cs(主代码文件)和Form1.Designer.cs(代码隐藏文件)之间的关系是什么。

在一行中,结论是确保;

Any event handler function in Form1.csprivate void ....开头,private void之后的词与该特定控件的代码隐藏文件中的定义完全相同。如果您想了解更多有关这些内容的信息,请查看此处

希望它可以帮助您解决问题。还有其他问题请告诉我。

于 2013-09-01T20:50:50.647 回答
0

您是否尝试过Application.DoEvents()在每个方法的末尾插入一条语句?有时表单对更新标签很挑剔,这种方法会迫使表单重新绘制自己。

于 2013-09-01T20:04:28.203 回答