2016-04-04 20 views
0

私は、プロダクションユニットのステータスコードを変更してプロセス中にそれらを追跡するために使用されるアプリケーションを持っています。私の現在の問題は、現在選択されているレコードのステータスコードに応じてステータスコードの説明を表示することです。私は仕事をすると思う方法を持っていますが、希望の行動をとるためにどこに置くべきかわかりません。バックエンドに2NF Microsoft Access(.mdb)データベースがあり、必要な情報がすべて含まれていて、正しく構築されていますが、C#で問題が発生しています。現在のステータスコードに応じたステータスコードの説明を表示

public void DescLabel() 
{ 
    if (statusCodeLabel.Text == "-5") 
    { 
     statusCodeDescLabel.Text = "Problem with Unit."; 
    } 

    if (statusCodeLabel.Text == "10") 
    { 
     statusCodeDescLabel.Text = "Manufacturing Order Created."; 
    } 

    if (statusCodeLabel.Text == "15") 
    { 
     statusCodeDescLabel.Text = "Stock Room in Process."; 
    } 

    if (statusCodeLabel.Text == "20") 
    { 
     statusCodeDescLabel.Text = "Picked by Stock Room."; 
    } 
} 
+1

関連するイベントにイベントハンドラをアタッチする必要があります。おそらく 'statusCodeLabel.TextChanged'または' statusCodeLabel.Leave' –

+0

0110のようにコードをバイナリとして保存する方が良いでしょう。最初のビット(MSB)はunit._に問題があり、2番目のビットは_Manufacturing Order Created._に関連しています。 。 あなたはこのようなビットを使用することを余儀なくされていない、あなたは小数を考えることができます。 8(1000)はunit._に問題あり、12(1100)はunit._と_Manufacturing Order Created._の両方に問題があります。 –

+0

このアプリケーションは何ですか? WPF、またはWinフォーム、またはWeb?それがWPFの場合は、値コンバーターを作成し、値を別のコントロール、つまりラベルのラベルにバインドします。また、クリーンコードの観点からは、コード/記述を外部ファイル – sowen

答えて

0

あなたは、単にStatusDescriptionと呼ばれる、あなたの生産ユニットのモデルクラスにプロパティを追加し、それはその内部ステータスコードに基づいて上記の文字列を返す可能性があります。次に、UIからそのプロパティを呼び出して、必要なテキストを取得します。

public StatusDescription { 
    get { 
     if (statusCode == 15) { 
      return "Stock Room in Process."; 
     } 

     // etc, etc. 

     return string.Empty; 
    } 
} 

それからちょうど...

statusCodeLabel.Text = productionUnit.StatusDescription; 

そして、それを更新する必要があるとき、あなたのUIを更新します。どちらかの状態の変化。または、タイマーで、アプリケーションに必要なものを使用します。

これは、すでにデータベースに存在し、問題のステータスコードを介してモデルクラスにマップされているようなものです。

関連する問題