2017-08-15 2 views
0

私はプログラミングが新しく、オブジェクトテキストに基づいて文字列の値を宣言する方法について質問します。与えられたテキストに基づいて文字列の値を宣言する

私のインターフェイスのtitle.Textに基づいて。私は文字列の値を決定するつもりです。私は会計とレジストラの両方のオフィスは異なるディレクトリを持っているので、私のフォルダパスを決定するための変数としてオフィスの文字列を使用しています

public Mainmenu() 
    { 
     InitializeComponent(); 
     initializeOffice(); 

    } 
    public string office; 

    public void initializeOffice() 
    { 
     if (officeName.Text == "Accounting Office") 
     { 
      office = "Accounting"; 
     } else if (officeName.Text == "Registrar's Office") 
     { 
      office = "Registrar"; 
     } 

:ここで私が試したコードです。例:

using (StreamWriter objWriter = File.AppendText("C:Desktop\\" + office + "\\Finished\\" + ticketNumber.Text +".txt")) 

誰でもお手伝いできますか?文字列のオフィスは、たとえオフィスのテキストが既に異なっていても、常に "会計"の価値を示すようです。

追加:

if (chooseService.Text == "") 
        { 
        MessageBox.Show("Please specify the department."); 
        } 
        else 
        { 
         this.Hide(); 
         Mainmenu login = new Mainmenu(); 

         login.Show(); 
         login.officeName.Text = chooseService.Text; 
        } 

これは私のofficeNameの内容がフェッチされるところです。 chooseServiceオブジェクトは、異なるオフィスの選択肢を持つcomboBoxです。

+0

デザイナーで定義したofficeName.Textのデフォルト/起動時の値は何ですか?いつそれが目的の文字列(会計事務所/レジストラのオフィス)に設定されていますか? – CodexNZ

+0

私の小さなプログラムのログイン画面に基づいています。ユーザがログインするときに部門を選択しなければならない場合、その選択に基づいて、officeNameがメインメニューに表示されます。だから、私はまた、ログインの選択に応じて、異なるオフィスの異なるフォルダにファイルを保存したいと思っていました。これは、2つの異なるオフィスで使用されるプログラムのようなものです。 –

+0

https://www.bing.com/search?q=c%23+get+value+from+textboxを検索し、テキストボックスから値を取得する方法を参照してください。あなたが値を入力するチャンスを与えたときに実際にそれを呼び出します。 –

答えて

1

ここでの問題は、MainMenuフォームは、 'office'を設定する文字列を設定する前にタイトルを初期化していることです。

はこれを試してみてください。

if (string.IsNullOrEmpty(chooseService.Text)) 
    MessageBox.Show("Please specify the department."); 
else 
{ 
    this.Hide(); 
    MainMenu login = new MainMenu(chooseService.Text); 
    login.Show(); 
} 

そして、そのようなあなたのMainMenuフォームを変更します。

public Mainmenu(string department) 
{ 
    InitializeComponent(); 
    initializeOffice(department); 

} 
public string office; 

public void initializeOffice(string department) 
{ 
    if (department == "Accounting Office") 
    { 
     office = "Accounting"; 
    } else if (department == "Registrar's Office") 
    { 
     office = "Registrar"; 
    } 

これはあなたのメインメニューのクラスは、それが正しい値を表示するために必要な情報を持っている保証(またはに使用します。パスを設定します)。また、MainMenuクラスのコンストラクタからタイトルの初期化を移動し、chooseService.Textの文字列値でinitailiszeOfficeを呼び出すこともできます。 Neater IMO。

+0

フォーム上のテキストボックスから値を読み取るのに本当に奇妙な置換え...あなたは実際にこのコードで答えようとした質問を説明したいかもしれません。 –

+0

@AlexeiLevenkovどういう意味ですか?ユーザはコンボからアイテムを選択し、そのテキストはフォルダパスで使用されるオフィスフィールドを初期化するためにMainMenuフォームに渡される。テキストボックスのテキスト値を設定するだけで、魔法のようにinitialzeOfficeメソッドが呼び出されるという前提があるようです。解決策は、テキストボックスのtextプロパティを設定した後、上記のコードか、initializeOffice()を呼び出すことです。私が何かを見逃している場合は訂正してうれしいです。 – CodexNZ

+0

私は今参照してください...質問はあなたが答えたように "値を渡す"と思われるOPが実際に必要とするものとは全く関係がありませんが、テキストフィールドの価値を読むことを求める...あなたは質問と回答を整列する際のOP ... –

関連する問題