2011-09-14 6 views
-2

私はこれまでに新しく、今まで私の問題を解決する解決策をオンラインで見つけられませんでした。テキストボックスとボタンをプログラムで追加する - >ボタンテキストボックスの内容がないクリックイベント

コントロールをプログラムで追加して使用したいと思いますが、これは機能し、内容はウィンドウに表示されますが、ボタンを使用してコンテンツを保存すると、イベントハンドラは渡された変数を取得しません。

私は、私が見逃していることがわからない次のような状況があります。 (WPF4、EF、VS2010)

XAMLには、私が追加したいグリッドがあります。テキストボックスとは

<Grid Name="Grid1"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="100"></RowDefinition> 
     <RowDefinition Height="50"></RowDefinition> 
    </Grid.RowDefinitions> 

    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="75*"></ColumnDefinition> 
     <ColumnDefinition Width="25*"></ColumnDefinition> 
    </Grid.ColumnDefinitions> 

    <TextBox Grid.Row="2" Name="textBox1" /> 
</Grid > 

などの背後にあるコードからボタンのコードビハインド:私は、XAMLでテキストボックスまたはXAMLで設定した他のすべてのコンテンツにアクセスすることができますが、私にはない

private void CheckMatching() 
{ 
    TextBox textBox2 = new TextBox(); 
    textBox2.Text = "textbox to fill"; 
    textBox2.Name = "textBox2"; 

    Grid1.Children.Add(textBox2); 

    Button SaveButton = new Button(); 
    SaveButton.Name = "Save"; 
    SaveButton.Content = "Save"; 

    SaveButton.Click += new RoutedEventHandler(SaveButton_Click); 
    Grid1.Children.Add(SaveButton); 
} 

private void SaveButton_Click (object sender, RoutedEventArgs e) 
{ 
    // works fine 
    string ShowContent1 = textBox1.Text; 

    // It doesn't show up in intellisense, so I cant use it yet 
    string ShowContent2 = textBox2.Text; 
} 

コードビハインドで設定した他のものの内容を取得します。コンテンツ自体がウィンドウに表示されます。

私はすでに異なるアプローチを試みました。これまでに何もできませんでした。

答えて

0

この質問はWPFの問題ではなく、オブジェクト指向コンピュータプログラミングに非常に基本的なものです。

どのようにdelcaredとCheckMatching方法でローカルで作成されたオブジェクト(textBox2)はSaveButton_Clickのような別の方法で利用可能であることをを期待ことができますか?

このため、クラスレベルのスコープを設定できます。

private TextBox textBox2; 

private void CheckMatching() 
{ 
    this.textBox2 = new TextBox(); 
    this.textBox2.Text = "textbox to fill"; 
    this.textBox2.Name = "textBox2"; 

    Grid1.Children.Add(this.textBox2); 
    ..... 
} 

private void SaveButton_Click (object sender, RoutedEventArgs e) 
{ 
     string ShowContent1 = textBox1.Text; // works fine 
     string ShowContent2 = this.textBox2.Text; // should work too 
} 

そして、あなたはまた、それをWPFの方法を行うことができます....

private void SaveButton_Click (object sender, RoutedEventArgs e) 
{ 
     string ShowContent1 = textBox1.Text; // works fine 
     string ShowContent2 = ((TextBox)Grid1.Children[1]).Text; // should work too 
} 
関連する問題