0

我有这段代码来显示/隐藏带有一些文本框的画布,当我按下按钮时,它会将数据从 TextBox1 提交到数据库。问题是我不知道如何在后面的 C# 代码中访问 TextBox1。

例如,这是我的一些 XAML 代码:

<ContentControl  Background="{x:Null}" >
  <ContentControl.Template>
     <ControlTemplate>
      <StackPanel Grid.Row="3" Height="500" Name="stack1" Width="280">
        <Canvas x:Name="canvas1"  Height="400" >
              <TextBox Height="23" Name="TextBox1"  Width="70" />

    <Button Content="Submit" Name="submit_button" Click="submit_button_Click" />
        </Canvas>

  <ToggleButton x:Name="toggleshowhide" Content="Show/Hide" IsChecked="True" Height="50" />
      </StackPanel>
     <ControlTemplate.Triggers>
      <Trigger SourceName="toggleshowhide" Property="IsChecked" Value="True">
        <Setter TargetName="canvas1" Property="Visibility" Value="Visible" />
          </Trigger>
      <Trigger SourceName="toggleshowhide" Property="IsChecked" Value="False">
        <Setter TargetName="canvas1" Property="Visibility" Value="Hidden" />
          </Trigger>
    </ControlTemplate.Triggers>
      </ControlTemplate>
  </ContentControl.Template>
     <Button Content="Button" Height="23" Name="submit" Width="74" />
</ContentControl>

这就是我想要实现的目标:

private void submit_button_Click(object sender, RoutedEventArgs e)
{
      OleDbCommand cmd = new OleDbCommand("INSERT INTO Table VALUES (this.TextBox1.Text), con); 

      cmd.Connection = con;

         int temp = cmd.ExecuteNonQuery();

        if (temp > 0)
        {
            MessageBox.Show("OK", "Info !");
        }
        else
        {
            MessageBox.Show("Some text !", "Error");
        }

如果有人可以提供帮助,我将不胜感激。:)

4

3 回答 3

1

在访问从 ControlTemplate 生成的元素时,您需要使用 Template 的 FindName 方法。在这种情况下,为您的 ContnetControl 命名:

<ContentControl  Background="{x:Null}" x:Name="MyContentControl">

在后面的代码中,您可以使用 FindName 方法按名称访问任何生成元素的值:

TextBox tb = (TextBox)MyContentControl.Template.FindName( "TextBox1", MyContentControl);

有关详细信息,请参阅:如何:查找 ControlTemplate 生成的元素

于 2012-10-13T01:07:46.453 回答
0

给你的 TextBox 一个 x:Name 而不是一个 Name ...甚至 Compile 吗?

xml:

<TextBox x:Name="TextBox1" />

CS :

var s = TextBox1.Text;
于 2012-10-13T00:11:37.357 回答
0
string v = this.TextBox1.Text;
OleDbCommand cmd = new OleDbCommand('INSERT INTO Table VALUES (' + v + ');');

顺便说一句,这是一个非常糟糕的主意,请阅读有关 sql 注入的信息...

于 2012-10-13T00:00:46.167 回答