1

WPF 的新手,知道他们已经对此有很多问题,但没有一个有效。我希望选项卡中的文本框在选择选项卡时获得焦点。

目前有

Private Sub TabControl1_Event(sender As Object, e As System.Windows.Controls.SelectionChangedEventArgs) 
_Handles TabControl1.SelectionChanged
    UpdateLayout()     'tried me.show() as well
    If TabControl1.SelectedIndex = 0 Then
        i = i + 1
        Title = "selected" + Convert.ToString(i)
        UserBox.Focus()
    End If
End Sub

i 增量和标题更改只是为了查看是否正在输入 if 循环,显然它是,但是文本框(应用程序中唯一的其他控件)仅在程序首次启动时才获得焦点。

正如我所说,我在这里看到了许多与此类似的其他问题,但它们要么不完全相同,要么根本不起作用。我在 WPF 应用程序中使用 vb.net。看起来这应该很简单,但我一生都无法弄清楚

如果这可以通过 tabItem 事件而不是 tabControl 事件来完成,那就太好了。

更新:IDK 如果重要,但我看到其他人发布它,所以这是我的 XAML

<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Burn In" Height="350" Width="525">
<TabControl Height="Auto" Name="TabControl1" Width="Auto">
    <TabItem Header="User" Name="UserTab">
        <Grid>
            <TextBox Height="25" HorizontalAlignment="Center" Margin="0" Name="UserBox" VerticalAlignment="Center" Width="250" AcceptsReturn="True" />
        </Grid>
    </TabItem>
    <TabItem Header="DUT" Name="DutTab">
        <Grid />
    </TabItem>
    <TabItem Header="Rack" Name="RackTab">
        <Grid />
    </TabItem>
    <TabItem Header="Programs" Name="ProgTab">
        <Grid />
    </TabItem>
</TabControl>
</Window>
4

1 回答 1

2

我在我的电脑上测试了这段代码,它运行良好。

Private Sub TabControl1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TabControl1.SelectedIndexChanged
        If TabControl1.SelectedIndex = 1 Then
            TabControl1.Update()
            TextBox1.Focus()
        End If
    End Sub

我使用 TabControl1_SelectedIndexChanged 子例程声明了 Tab 的更改。如果您不明确 TabControl1 已更改,则需要单击 TabPage 以进行更改。

于 2013-06-24T15:36:14.087 回答