TabControl 并将焦点设置在 WPF 中的文本框上

发布于 2024-07-29 13:24:47 字数 264 浏览 2 评论 0原文

我在 WPF 中有一个选项卡控件 当我切换到特定的 tabItem 时,我想将焦点设置在特定的 textBox 上,

我添加了 textBox_n.Focus(); 的代码; 在selectionChanged的事件处理程序中,但它不起作用。

我在 tabItem 的 GotFocus 的事件处理程序中添加了代码,但很有趣 调用textBox_n.Focus(),再次调用tabItem的GotFocus。

那么最好把它放在哪里和什么地方。

I have a tabcontrol in WPF
When I switch to a specific tabItem , I want to set the focus on a specific textBox

I added the code of textBox_n.Focus(); in the event handler of selectionChanged, but it didn't work.

I added the code in the event handler of the tabItem's GotFocus, but funny enough
calling textBox_n.Focus(), was calling the tabItem's GotFocus again.

so where and what the best place to put it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

傻比既视感 2024-08-05 13:24:47

如果您使用网格来排列文本框,则可以将要聚焦的网格作为网格的第一个子网格,并将其行和列指定为第二个或第三个,这是一个示例。

    <TabControl>
        <TabItem Header="Tab 1">

        </TabItem>
        <TabItem Header="Tab 2">
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="Auto" />
                </Grid.RowDefinitions>
                <TextBox Grid.Row="1" Margin="5">textBox2</TextBox> <!-- This textbox is the first child of the grid, so it gets focused -->
                <TextBox Grid.Row="0" Margin="5">textBox1</TextBox> <!-- This textbox is catually on top of textBox2 -->
            </Grid>
        </TabItem>
    </TabControl>

当然不是很优雅,但它可以快速完成工作。 也不需要隐藏代码。

If you're using a grid to arrange the textboxes, you could put the grid you want to focus as the first child of the grid, and specify it's row and column to be the second or third, here's an example.

    <TabControl>
        <TabItem Header="Tab 1">

        </TabItem>
        <TabItem Header="Tab 2">
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="Auto" />
                </Grid.RowDefinitions>
                <TextBox Grid.Row="1" Margin="5">textBox2</TextBox> <!-- This textbox is the first child of the grid, so it gets focused -->
                <TextBox Grid.Row="0" Margin="5">textBox1</TextBox> <!-- This textbox is catually on top of textBox2 -->
            </Grid>
        </TabItem>
    </TabControl>

Not very elegant of course, but it gets the job done fast. Also no code-behind required.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文