用户控件中的多个默认按钮

发布于 2024-08-18 00:19:04 字数 249 浏览 8 评论 0原文

我有一个由 3 个文本框、3 个按钮和一个网格视图组成的用户控件。我可以设置表单的defaultbutton属性,但这只会影响一个按钮。

每个文本框/按钮组合都应该具有这样的行为:当文本框获得焦点时,按 Enter 键应该触发其关联的按钮。

使问题进一步复杂化的是,这是在母版页实现中使用的。

有什么办法可以做到这一点吗?据我所知,.NET 只允许一个默认按钮 - 它不提供显式关联文本框和按钮的功能。

我欢迎您的见解。

I have a user control that is comprised of 3 textboxes, 3 buttons and a gridview. I can set the defaultbutton property of the form, but that would only affect one button.

Each textbox/button combo should have a behavior that when the textbox has focus, pressing Enter should fire its associated button.

To further complicate the issue, this is being used inside a Master Page implementation.

Is there any way to do this? As far as I can tell, .NET will only allow one default button - it doesn't provide to explicitly associate textboxes and buttons.

I welcome your insights.

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

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

发布评论

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

评论(4

对风讲故事 2024-08-25 00:19:04

这里有一种方法:

<form id="form1" runat="server">
<div>
    <asp:Panel ID="Panel1" DefaultButton="Button1" runat="server">
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />
        <asp:Button ID="Button1" runat="server" Text="Button" />
    </asp:Panel>
    <asp:Panel ID="Panel2" DefaultButton="Button2" runat="server">
        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><br />
        <asp:Button ID="Button2" runat="server" Text="Button" />
    </asp:Panel>
    <asp:Panel ID="Panel3" DefaultButton="Button3" runat="server">
        <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox><br />
        <asp:Button ID="Button3" runat="server" Text="Button" />
    </asp:Panel>
</div>
</form>

Here one way:

<form id="form1" runat="server">
<div>
    <asp:Panel ID="Panel1" DefaultButton="Button1" runat="server">
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />
        <asp:Button ID="Button1" runat="server" Text="Button" />
    </asp:Panel>
    <asp:Panel ID="Panel2" DefaultButton="Button2" runat="server">
        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><br />
        <asp:Button ID="Button2" runat="server" Text="Button" />
    </asp:Panel>
    <asp:Panel ID="Panel3" DefaultButton="Button3" runat="server">
        <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox><br />
        <asp:Button ID="Button3" runat="server" Text="Button" />
    </asp:Panel>
</div>
</form>
内心荒芜 2024-08-25 00:19:04

尝试为每个文本框/按钮集创建一个单独的用户控件。这样每个文本框都会触发其关联的按钮。

Try creating a separate User Control for each TextBox/Button set. That way each Textbox will fire it's associated Button.

别低头,皇冠会掉 2024-08-25 00:19:04

您可以禁用默认按钮并处理文本框的 onKeyPress 事件。

You can disable the default button and handle the textbox's onKeyPress event.

躲猫猫 2024-08-25 00:19:04

这是使用附加属性的一个不错的解决方案:
http://neilmosafi.blogspot.com/ 2007/04/default-buttons-in-wpf-and-multiple.html

只需创建一个带有文章附加属性代码的类并将其添加到控件中,该类封装了每个 TextBox 和 Button 对。

示例: <文本框.../>> <按钮.../>

注意:
如果将具有依赖属性的文件添加到子目录,则需要使用其他命名空间定义而不是 local:

Here is a sweet solution by usage of an Attached Property:
http://neilmosafi.blogspot.com/2007/04/default-buttons-in-wpf-and-multiple.html

Just create a class with the attached property code of the article and add it to controls, which encapsulate each TextBox and Button pair.

Example: <StackPanel ... local:AccessKeyScoper.IsAccessKeyScope="True"> <TextBox ... /> <Button ... /> </StackPanel>

Note:
If you add the file with the Dependency Property to a subdirectory, you need to use an other namespace definition instead of local:.

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