gpt4 book ai didi

c# - 检测 KeyDown 上的退格键

转载 作者:可可西里 更新时间:2023-11-01 08:24:10 26 4
gpt4 key购买 nike

我正在开发一个 silverlight 网络应用程序。它与发送 SMS 的模块交互。我想将文本限制为 160 并显示一个计数器。我是这样做的:

public partial class SendSMSView
{
public SendSMSView()
{
InitializeComponent();
ApplyTheme();
}

protected void tbMessage_KeyDown(object sender, KeyEventArgs e)
{
count = 160 - this.tbMessage.Text.Length;
this.lblCount.Content = count.ToString();
}
}

这适用于除退格键和删除键之外的所有键。当然,它就是这样运作的。我对此进行了更多研究并尝试覆盖 keydown 事件,因此我添加了以下代码片段:

public class CustomTextBox : TextBox
{
public CustomTextBox(): base()
{
}

protected override void OnKeyDown(KeyEventArgs e)
{
e.handler=false;
base.OnKeyDown(e);
//this place
}
}

在 OnKeyDown 函数中,我获取了所有已注册的击键。在这里将 Handler 设置为 false 没有帮助,我仍然无法使用退格键来触发 tbMessage_KeyDow。

我想以某种方式从//这个地方强制调用 tbMessage_KeyDow 函数以退格。

我搜索了 MSDN,发现可以重写 IsInputKey 以返回 true,以便 onKeyDown 也响应它,但我的框架既没有 IsInputKey 也没有 PreviewKeyPress。是否有将退格键注册为输入键或调用 tbMessage_KeyDow [这是非常粗略的方法] 的解决方法?请帮忙。

最佳答案

试试这个....

如果你想检测文本框中按下的键上的退格键。我们建议您可以尝试在文本框的 KeyUp 事件中而不是 KeyDown 事件中执行。例如:

   <TextBox x:Name="txt" KeyDown="txt_KeyDown" Text="Hello" KeyUp="txt_KeyUp"></TextBox>    

代码隐藏:

    private void txt_KeyUp(object sender, KeyEventArgs e)
{
if (e.Key == Key.Back)
{
MessageBox.Show(this.txt.Text);
}
}

或者您可以这样做...通过创建用户控件...

public partial class Page : UserControl {

private TextBox TextBox1;

public Page() {
InitializeComponent();
TextBox1 = new TextBox();
Width = 300;
Height = 100;
LayoutRoot.Children.Add(textbox);
OnTextChanged(((object)(sender)), ((TextChangedEventArgs)(e)));
TextBox1.TextChanged;
if (e.Key == Key.Back) {
e.Handled = true;
}
else if (e.Key == Key.Delete) {
e.Handled = true;
}
}
}

关于c# - 检测 KeyDown 上的退格键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7917388/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com