Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将文本框名称参数从MainWindow.xaml传递给按钮单击函数_C#_Wpf_Xaml - Fatal编程技术网

C# 将文本框名称参数从MainWindow.xaml传递给按钮单击函数

C# 将文本框名称参数从MainWindow.xaml传递给按钮单击函数,c#,wpf,xaml,C#,Wpf,Xaml,我正在制作一个使用Microsoft.Win32.OpenFileDialog dlg=new Microsoft.Win32.OpenFileDialog()的表单;提供文件选择菜单 我想使用相同的函数来更新输入文件的文本框和输出文件的文本框 <StackPanel Orientation="Horizontal" HorizontalAlignment="Left" Width="515" Height="96" VerticalAlignment="Top">

我正在制作一个使用Microsoft.Win32.OpenFileDialog dlg=new Microsoft.Win32.OpenFileDialog()的表单;提供文件选择菜单

我想使用相同的函数来更新输入文件的文本框和输出文件的文本框

    <StackPanel Orientation="Horizontal" HorizontalAlignment="Left" Width="515" Height="96" VerticalAlignment="Top">
        <TextBlock Text="Input File:"  VerticalAlignment="Center"  />
        <TextBox x:Name="InputFileBox" Width ="213" VerticalAlignment="Center" TextChanged="InputFileBox_TextChanged" Height="17" Margin="0,39,0,40"  />
        <Button Content="Browse" Width="47" Margin="0,39,0,40" RenderTransformOrigin="1.599,0.714" Click="Browse_Click"/>
    </StackPanel>


    <StackPanel Orientation="Horizontal" HorizontalAlignment="Left" Width="515" Height="96" VerticalAlignment="Top">
        <TextBlock Text="Output File:"  VerticalAlignment="Center"  />
        <TextBox x:Name="OutputFileBox" Width ="213" VerticalAlignment="Center" TextChanged="OutputFileBox_TextChanged" Height="17" Margin="0,39,0,40"  />
        <Button Content="Browse2" Width="47" Margin="0,39,0,40" RenderTransformOrigin="1.599,0.714" Click="Browse_Click"/>
    </StackPanel>

因此,我希望能够发送带有“BrowseClick”的“InputFileBox”或“OutputFileBox”,这样我就不必拥有BrowseInputClick和BrowseOutputClick功能

在Browse_Click功能中,我希望能够执行以下操作:

 private void Browse_Click(object sender, RoutedEventArgs e)
    {
        // Create OpenFileDialog 
        Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();


        // Display OpenFileDialog by calling ShowDialog method 
        Nullable<bool> result = dlg.ShowDialog();


        // Get the selected file name and display in a TextBox 
        if (result == true)
        {
            // Open document 
            string filename = dlg.FileName;

            // I don't know what to put here: input/outputTextBoxName = filename
        }
private void Browse\u单击(对象发送者,路由目标)
{
//创建OpenFileDialog
Microsoft.Win32.OpenFileDialog dlg=新的Microsoft.Win32.OpenFileDialog();
//通过调用ShowDialog方法显示OpenFileDialog
可为空的结果=dlg.ShowDialog();
//获取所选文件名并显示在文本框中
如果(结果==真)
{
//打开文件
字符串文件名=dlg.filename;
//我不知道在这里放什么:input/outputExtBoxName=filename
}

谢谢

在WPF中,您可以设置按钮的标记属性

一旦获得了该属性,就可以使用

在XAML中,将
Tag=“input”
添加为inputTextBox上的属性之一,并将
Tag=“output”
添加到outputTextBox(例如:

然后:


您可以创建usercontrol并在这两个位置重复使用。文件名应该是textbox的属性,而不是私有成员。您应该创建一个属性并将其绑定到文本框中。另外,请在使用WPF之前查看MVVM,不要使用代码隐藏。这是可行的,但无法通过引用传递textbox,因此处理程序不需要要知道可能会发送多少个不同的文本框,可以使用绑定将标记绑定到要更改的文本框
var tag = (sender as Button).Tag;
if (tag == 'input')
    inputTextBox.Text = filename;
else outputTextBox.Text = filename;