我有一个用户控件,由3个文本框,3个按钮和一个gridview组成。我可以设置表单的defaultbutton属性,但这只会影响一个按钮。
每个文本框/按钮组合都应该有一个行为,当文本框具有焦点时,按Enter键应该触发其关联的按钮。
为了进一步使问题复杂化,这是在母版页实现中使用的。
有没有办法做到这一点?据我所知,.NET只允许一个默认按钮 - 它不提供显式关联文本框和按钮。
我欢迎您的见解。
答案 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:
。