2017-08-02 7 views
1

私は、一連のテキストを読み込んで特定の値を検索するアプリケーションを持っています。これらの値を選択すると、ダイアログボックスで新しい値を入力するよう求められます。プロンプトダイアログから値を返す

私が抱えている問題は、メソッドの外でこの値を呼び出すことができないということです。以下は

プロンプトを呼び出すコードです:ユーザーは次のようにこれは返された値を追加する場合

return prompt.ShowDialog() == DialogResult.OK ? textBox.Text : ""; 

:私は今、やりたいと思っています何

System.Windows.Forms.Control.Text.get returned "1234" string 

は、この値を呼んでいます別の方法で私はstring.Replaceを行うことができますように。

何か助けていただければ幸いです。

** EDIT **

完全な方法は以下の通りです。

public static string ShowDialog(string text, string caption) 
{ 
    Form prompt = new Form() 
    { 
     Width = 500, 
     Height = 150, 
     FormBorderStyle = FormBorderStyle.FixedDialog, 
     Text = caption, 
     StartPosition = FormStartPosition.CenterScreen 
    }; 
    Label textLabel = new Label() { Left = 50, Top = 20, Text = text }; 
    TextBox textBox = new TextBox() { Left = 50, Top = 50, Width = 400 }; 
    Button confirmation = new Button() { Text = "Add", Left = 350, Width = 100, Top = 70, DialogResult = DialogResult.OK }; 
    confirmation.Click += (sender, e) => { prompt.Close(); }; 
    prompt.Controls.Add(textBox); 
    prompt.Controls.Add(confirmation); 
    prompt.Controls.Add(textLabel); 
    prompt.AcceptButton = confirmation; 

    return prompt.ShowDialog() == DialogResult.OK ? textBox.Text : ""; 
+0

'textBox'を' public'として定義すると、ダイアログが閉じられた後にアクセスできるようになります。 – i486

+0

@ i486、私は私が従うとは思わない、この方法はパブリックな静的なvoidですが、どのように単一の要素を定義するのですか? – Tom

+0

ダイアログは 'DialogResult' - ' OK'、 'Cancel'などしか返しません。結果が' OK'ならダイアログのコントロールを読み込み、呼び出したメソッドから値をチェックできます。また、ダイアログが閉じられる前にOKボタンをクリックしてこの処理を行い、値が間違っていれば閉じることもできます。 OKボタンのOnClickイベントをキャプチャします。 – i486

答えて

2

プロンプトダイアログでパブリックゲッターを使用してプロパティを作成する必要があります。 ShowDialogが呼び出された後、そのプロパティから値を読み取ることができます。実際、フォームが破棄されない限り、そのプロパティにアクセスできます。

using(var frm = new PromptForm()) 
{ 
    if(frm.ShowDialog() == DialogResult.OK) 
    { 
     var s = frm.SomeProperty; 
    } 
}