Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.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# 如何动态获取标签名称?_C#_Wpf - Fatal编程技术网

C# 如何动态获取标签名称?

C# 如何动态获取标签名称?,c#,wpf,C#,Wpf,通过上面的代码,我可以在单击按钮时动态获取按钮名称。 在上图中,一个按钮(btn_c)有两个标签。现在,当我单击按钮(btn_c)时,我希望动态地获得单独的标签名称。您可以这样获得它们(在btn_c单击处理程序中): 你的整个设计真的需要一些返工。看一下这段代码:(注意事件处理程序的数量减少了;您需要修改XAML以使用它们) 公共部分类主窗口:窗口 { 文本框LastFocusedTextBox; 公共主窗口() { this.InitializeComponent(); } 私有无效btn_单

通过上面的代码,我可以在单击按钮时动态获取按钮名称。
在上图中,一个按钮(btn_c)有两个标签。现在,当我单击按钮(btn_c)时,我希望动态地获得单独的标签名称。

您可以这样获得它们(在btn_c单击处理程序中):


你的整个设计真的需要一些返工。看一下这段代码:(注意事件处理程序的数量减少了;您需要修改XAML以使用它们)

公共部分类主窗口:窗口
{
文本框LastFocusedTextBox;
公共主窗口()
{
this.InitializeComponent();
}
私有无效btn_单击(对象发送方,路由目标)
{
InsertButtonContent((按钮)发送器);
}
私有void txt_diplay_GotFocus(对象发送方,路由目标e)
{
LastFocusedTextBox=(TextBox)发送方;
}
公共空白插入按钮内容(按钮)
{
if(LastFocusedTextBox!=null)
{
string ButtonContString=按钮。内容为字符串;
if(string.IsNullOrEmpty(buttonContentString))
{
var grid=按钮。内容为网格;
如果(网格!=null)
buttonContentString=string.Join(“,grid.Children.OfType().Select(x=>x.Content));
}
var caret_index=LastFocusedTextBox.CaretIndex;
LastFocusedTextBox.Text=LastFocusedTextBox.Text.Insert(插入符号索引,按钮上下文字符串);
LastFocusedTextBox.Focus();
LastFocusedTextBox.CaretIndex=插入符号索引+按钮内容字符串.Length;
}
}
}

请注意,
按钮
是如何传递给方法的,而不是存储在字段中的。此外,类中和
all\u in\u one()
方法本地的不必要字段也被删除。要获取网格中标签的内容(例如,
“1!”
-我假设这就是您所追求的,因为没有其他内容可以进入简单的字符串字段,也无法匹配前两个按钮的一般模式),我们只需选择其内容并将其连接到单个字符串中,检查内容是字符串还是网格后。

请清楚地告诉我,答案似乎正确,但我不明白。当我点击btn_c时,我必须获得标签名称。请将您的代码与我的代码放在一起,这样只有我才能理解。
<Grid x:Name="LayoutRoot">
    <TextBox x:Name="txt_diplay_1" HorizontalAlignment="Left" Height="42" Margin="155,78,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="103.5" GotFocus="txt_diplay_1_GotFocus" />
    <TextBox x:Name="txt_diplay_2" Height="42" Margin="297,78,239.5,0" TextWrapping="Wrap" VerticalAlignment="Top" GotFocus="txt_diplay_2_GotFocus" />
    <Button x:Name="btn_a" Content="A" HorizontalAlignment="Left" Height="40" Margin="155,147,0,0" VerticalAlignment="Top" Width="73" Click="btn_a_Click" />
    <Button x:Name="btn_b" Content="B" Height="40" Margin="237,147,0,0" VerticalAlignment="Top" Click="btn_b_Click" HorizontalAlignment="Left" Width="73" />
    <Button x:Name="btn_c"  Height="40" Margin="0,147,239.5,0" VerticalAlignment="Top" HorizontalAlignment="Right" Width="73" Click="btn_c_Click" >
        <Grid Height="30.833" Width="61.5">
            <Label x:Name="lbl_1" Content="1" Margin="22.498,6.5,19.501,2.166"/>
            <Label x:Name="lbl_2" Content="!" HorizontalAlignment="Right" Margin="0,-4.422,0,13.088" Width="19.501"/>
        </Grid>
    </Button>
</Grid>
public partial class MainWindow : Window
{
    Control TexboxDetails = null;      
    Control ButtonDetails;             
    Button BehaveButton;     

    public MainWindow()
    {
        this.InitializeComponent();
    }

private void btn_a_Click(object sender, RoutedEventArgs e)
    {
        ButtonDetails = (Control)sender;
        all_in_one();
    }

    private void btn_b_Click(object sender, RoutedEventArgs e)
    {
        ButtonDetails = (Control)sender;

        all_in_one();
    }

    private void btn_c_Click(object sender, RoutedEventArgs e)
    {

    }

    private void txt_diplay_1_GotFocus(object sender, RoutedEventArgs e)
    {
        TexboxDetails = (Control)sender;
    }

    private void txt_diplay_2_GotFocus(object sender, RoutedEventArgs e)
    {
        TexboxDetails = (Control)sender;
    }

    public void all_in_one()
    {
        BehaveButton = ButtonDetails as Button;
        if (TexboxDetails != null)
        {
            TextBox BehaveTextbox = TexboxDetails as TextBox;
            var caret_index = BehaveTextbox.CaretIndex;
            BehaveTextbox.Text = BehaveTextbox.Text.Insert(caret_index, BehaveButton.Content.ToString());
            BehaveTextbox.Focus();
            BehaveTextbox.CaretIndex = caret_index + 1;
        }
    }
}
var btn_c = (Button)sender;
Grid grid = (Grid)btn_c.Content;
Label label1 = (Label)grid.Children[0];
string name1 = label1.Name;
public partial class MainWindow : Window
{
    TextBox LastFocusedTextBox;
    public MainWindow()
    {
        this.InitializeComponent();
    }

    private void btn_Click(object sender, RoutedEventArgs e)
    {
        InsertButtonContent((Button)sender);
    }

    private void txt_diplay_GotFocus(object sender, RoutedEventArgs e)
    {
        LastFocusedTextBox = (TextBox)sender;
    }

    public void InsertButtonContent(Button button)
    {
        if (LastFocusedTextBox != null)
        {
            string buttonContentString = button.Content as string;
            if (string.IsNullOrEmpty(buttonContentString))
            {
                var grid = button.Content as Grid;
                if (grid != null)
                    buttonContentString = string.Join("", grid.Children.OfType<ContentControl>().Select(x => x.Content));
            }
            var caret_index = LastFocusedTextBox.CaretIndex;
            LastFocusedTextBox.Text = LastFocusedTextBox.Text.Insert(caret_index, buttonContentString);
            LastFocusedTextBox.Focus();
            LastFocusedTextBox.CaretIndex = caret_index + buttonContentString.Length;
        }
    }
}