首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尽管已定义了WPF KeyDown方法,但仍无法在类中找到

尽管已定义了WPF KeyDown方法,但仍无法在类中找到
EN

Stack Overflow用户
提问于 2018-10-07 20:12:12
回答 4查看 542关注 0票数 0

我希望在按下enter键时调用方法KeyPress,因此我已经将整个窗口的KeyDown事件写入了窗口定义(如下所示):

代码语言:javascript
复制
<Window x:Name="window" x:Class="MoonLander.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:MoonLander"
    xmlns:oxy="http://oxyplot.org/wpf"
    mc:Ignorable="d"
    Loaded="OnLoaded"
    KeyDown="KeyPress"
    Title="Moon Lander 2018" Height="580.714" Width="958.824" AutomationProperties.AcceleratorKey="" Background="White">

我在我的KeyPress类中定义了如下函数MainWindow:

代码语言:javascript
复制
public void KeyPress(object sender, KeyEventArgs e)
{
   //Do something
}

知道为什么我会收到这个错误信息吗?:

错误CS1061 'MainWindow‘不包含“KeyPress”和>>no可访问扩展方法'KeyPress’的定义,可以找到接受first >>'MainWindow‘类型的第一个参数(您是缺少了使用指令还是>>assembly引用?)

我需要把重点放在无线传感器上吗?(我试图使用Loaded="OnLoaded“来完成此操作,但是有相同的错误消息)

我试图更改保护级别,并将第一个参数更改为MainWindow对象,但我得到了相同的错误。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-10-08 12:27:23

我猜您是用手工编写的,而不是使用IDE来生成处理程序。这意味着中间代码不包含事件和方法的绑定。该绑定出现在通常命名为以下内容的隐藏文件中,在您的示例中:

MainWindow.g.i.cs

您应该做的是在XAML中,首先输入您想要处理的事件,在本例中是KeyDown,然后使用TAB键自动生成处理程序。您应该以这样的方法结束:

代码语言:javascript
复制
private void MainWindow_KeyDown(Object sender, KeyEventArgs e)
{
}

注意,自动生成的方法是private,而您的方法是public。这是你亲手做的第一条线索。

票数 0
EN

Stack Overflow用户

发布于 2022-09-23 19:25:12

我发现移除XAML中的违规行、保存项目、关闭项目、重新打开它、检查错误已经消失,然后将行放回工作状态。对于不同的事情,这是一个比我愿意承认的更多次的解决方案!

票数 0
EN

Stack Overflow用户

发布于 2018-10-08 01:37:30

我编写了相同的代码,没有得到任何error.You应该更改函数名在xaml,以尝试again.And键下的f12,以自动机箱的函数。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52692467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档