-2

私が取り組んでいるボタンのクリックを伴うプロジェクトに問題があり、作成したラベル ボックスにテキストが表示されるはずです。ボタンをクリックしたときにテキスト ボックスを使用してテキストを表示する方が簡単なのはわかっていますが、講師はテキストを表示する代わりにラベルを使用することを望んでいます。プロジェクトをデバッグしましたが、問題はありませんが、下部にあるボタンの 1 つをクリックすると、割り当てられたラベルにテキストが表示されません。以下は私が使用しているコードです。多分私は何かが欠けています。たとえば、顧客関係ボタンをクリックすると、あるラベルに部門、次のラベルに連絡先名、次のラベルに電話番号が表示されます。それが十分な情報であることを願っています

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 TextBoxTextChanged EventVisual StudioのイベントウィンドウでTextChangedイベントを見つけてダブルクリックすると、Visual Studioがこれを生成します。

private void textBox1_TextChanged(object sender,EventArgs e)
{

}

これは私たちプログラマーが呼んでいるものです。クリックすると、そこにたくさんのコードが表示されます。次の行を見つけます Event HandlerSolution Explorer Window in Visual StudioForm1.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(コード ビハインド ファイル)の関係がわかったと思います。

1 行で、結論は次のようになります。

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 に答える