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

时间:2010-01-11 16:37:30

标签: asp.net user-controls defaultbutton

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

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

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

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

我欢迎您的见解。

4 个答案:

答案 0 :(得分:4)

这里有一种方式:

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

只需使用本文附带的属性代码创建一个类,然后将其添加到控件中即可,该控件封装了每个TextBox和Button对。

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

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