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;
}
}
}