2016-05-13 14 views
0

C#でうまくいくためにレンガブレーカのクローンを作成していますが、このエラーが続いています "エラー1 'WPFGame1.Gammer'に 'Window_KeyDown 'WPFGame1.Gammer'型の最初の引数を受け入れる拡張メソッド 'Window_KeyDown'がありませんでした(使用するディレクティブまたはアセンブリ参照がありませんか?) " WPFで、クラスに宣言しました あなたが必要としない無用なCSがたくさんありますが、他に必要なことがある場合に備えて、すべてのものがそこに存在することを望みました。 ここrelevent XAMLクラスの定義がなく、引数を見つけることができません。C#

<Window x:Class="WPFGame1.Gammer" Name="myWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    WindowStyle="None" 
    AllowsTransparency="True" 
    ResizeMode="CanMinimize" 
    Title="Brick Breaker" Height="650" Width="700" 
    KeyDown="Window_KeyDown" <!--error occurs here--> 
    WindowStartupLocation="CenterScreen" 
    > 

だとCS

public class Gammer : Window, IComponentConnector{ 
    private void Window_KeyDown(object sender, KeyEventArgs e) 
     { 
      if (Gammer.movingTimer.IsEnabled && e.Key == Key.Space) 
      { 
       Gammer.movingTimer.Stop(); 
       Pause p = new Pause(this); 
       p.ShowDialog(); 
      } 
      Key key = e.Key; 
      if (key <= Key.F) 
      { 
       switch (key) 
       { 
        case Key.Left: 
         { 
          double leftRed = Canvas.GetLeft(this.rectangleRed); 
          if (leftRed > 0.0) 
          { 
           Canvas.SetLeft(this.rectangleRed, leftRed - 20); 
           return; 
          } 
          break; 
         } 
        case Key.Up: 
         break; 
        case Key.Right: 
         double rightRed = Canvas.GetLeft(this.rectangleRed); 
         if (rightRed < 550.0) 
         { 
          Canvas.SetLeft(this.rectangleRed, rightRed + 20); 
          return; 
         } 
         break; 
        default: 
         if (key != Key.F) 
         { 
          return; 
         } 
         double rightBlue = Canvas.GetLeft(this.rectangleBlue); 
         if (rightBlue < 550.0) 
         { 
          Canvas.SetLeft(this.rectangleBlue, rightBlue + 20); 
         } 
         break; 
       } 
       } 
      else if(key != Key.F) 
      { 
       if(key == Key.F1) 
       { 
        Help h = new Help(); 
        h.Show(); 
        return; 
       } 
       if(key != Key.F5) 
       { 
        return; 
       } 
       Touch.FrameReported += new TouchFrameEventHandler(this.Touch_FrameReportedRed); 
       Gammer.movingTimer.Start(); 
       this.currentGameState = 1; 
       this.setInitialState(); 
       this.clearCanvas(); 
       this.brickGenerator(this.currentGameState); 
       return; 
      }else 
      { 
       double leftBlue = Canvas.GetLeft(this.rectangleBlue); 
       if(leftBlue > 0.0) 
       { 
        Canvas.SetLeft(this.rectangleBlue, leftBlue - 20.0); 
        return; 

       } 
      } 
      }} 
+0

にすべてが私には完璧に見えること。切り替えてみてください時々、ビジュアルスタジオは少しバギーです。ソリューションをクリーニングし、Visual Studioを再起動してください。 – CathalMF

+0

まだ同じエラーです。私は2010年と2015年の編集を切り替えることができますか? – Cottenballzz

+0

@CathalMFは明確なコンパイラエラーのバグを想定しています。コードはperferctを見ない*デザイナーが生成するクラスは部分的です。このクラスはそうではありません。クリーニングではコーディングエラーは修正されません –

答えて

2
public class Gammer : Window, IComponentConnector{ 

この

public partial class Gammer : Window, IComponentConnector{ 
+0

良い点があります。私はOPがどのように非部分的なクラスを持っているのか分かりません。 wpfには、バックグラウンドに自動生成されたクラスがあるはずです。 – CathalMF

+0

プログラムを実行してもエラーが表示されますが、メソッドの名前を変更してみましたが、残りのコードを投稿した場合に役立ちますか? – Cottenballzz

+1

これはプログラムのすべてですか? 通常、すべてのWPFアプリケーションには、コンポーネントを初期化するコンストラクタがあります。 WPFGame1という名前空間もありますか? – bcpermafrost

関連する問題