小编Fra*_*ich的帖子

用通用签名覆盖抽象方法并调用它

通用接口:

public interface Matcher<T> {
    public double getScore(T value1, T value2);
}
Run Code Online (Sandbox Code Playgroud)

两个实施类:

public StringMatcher implements Matcher<String> {
    public double getScore(String value1, String value2) {...}
}

public DateMatcher implements Matcher<Date> {
    public double getScore(Date value1, Date value2) {...}
}
Run Code Online (Sandbox Code Playgroud)

到目前为止一切都很好.更换TString或者Date是没有问题的.调用getScore()如下方法也有效:

Matcher<String> matcher = new StringMatcher();
matcher.getScore("hello", "world");
Run Code Online (Sandbox Code Playgroud)

当我有一个List未知的Matcher并且我想使用该getScore()方法时,问题就开始了.

public void test() {
    List<Matcher<?>> list = new ArrayList<Matcher<?>>();
    list.add(new StringMatcher());
    list.add(new DateMatcher());

    for (Matcher<?> matcher : list) …
Run Code Online (Sandbox Code Playgroud)

java generics

4
推荐指数
1
解决办法
192
查看次数

按Enter键进入UserControl时,不会触发KeyDown事件

我有一个用于应用程序的UserControl和一个文本框.当按下此文本框中的Enter键时,应该激活一个按钮(基本上按下"确定"按Enter键而不是用鼠标手动单击按钮).

所以我在我的文本框中添加了一个KeyDown事件并实现了以下代码:

private void txtSearchID_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter && !txtSearchID.Text.Equals(string.Empty))
    {
       button_Click(null, null);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我想测试时,按Enter键时没有发生任何事情.除此之外,奇怪的是,当按Enter键时,事件甚至不会被触发,而是每隔一个键.我错过了什么吗?

c# events user-controls

2
推荐指数
1
解决办法
3002
查看次数

标签 统计

c# ×1

events ×1

generics ×1

java ×1

user-controls ×1