我有一个由 3 个文本框、3 个按钮和一个网格视图组成的用户控件。我可以设置表单的默认按钮属性,但这只会影响一个按钮。
每个文本框/按钮组合应该有一个行为,当文本框有焦点时,按 Enter 应该触发其关联的按钮。
为了使问题进一步复杂化,这是在母版页实现中使用的。
有没有办法做到这一点?据我所知,.NET 将只允许一个默认按钮 - 它不提供显式关联文本框和按钮。
我欢迎你的见解。
我有一个由 3 个文本框、3 个按钮和一个网格视图组成的用户控件。我可以设置表单的默认按钮属性,但这只会影响一个按钮。
每个文本框/按钮组合应该有一个行为,当文本框有焦点时,按 Enter 应该触发其关联的按钮。
为了使问题进一步复杂化,这是在母版页实现中使用的。
有没有办法做到这一点?据我所知,.NET 将只允许一个默认按钮 - 它不提供显式关联文本框和按钮。
我欢迎你的见解。
这里有一种方法:
<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>
尝试为每个 TextBox/Button 集创建一个单独的用户控件。这样每个文本框都会触发它关联的按钮。
您可以禁用默认按钮并处理文本框的 onKeyPress 事件。
这是使用附加属性的最佳解决方案:http : //neilmosafi.blogspot.com/2007/04/default-buttons-in-wpf-and-multiple.html
只需使用文章的附加属性代码创建一个类并将其添加到控件中,该控件封装了每个 TextBox 和 Button 对。
例子:<StackPanel ... local:AccessKeyScoper.IsAccessKeyScope="True"> <TextBox ... /> <Button ... /> </StackPanel>
注意:如果将具有依赖属性的文件添加到子目录,则需要使用其他命名空间定义而不是local:
.