C#名称空间'System.Windows'中不存在类型或命名空间名称'Forms'

时间:2013-12-19 22:52:03

标签: c# namespaces key controls

这是我的代码。

namespace TextRPG1
{
   public class Program
   {
      private bool nonyn = false;

      static void Main(string[] args)
      {
         //Introduction
         Console.WriteLine("Welcome to TextRPG By AgentMcBride.");
         Console.WriteLine("You can exit at any time by hitting the ESC key!");
         Console.WriteLine("Press any key to begin!");
         Console.ReadKey();
         Console.WriteLine("Great! Lets begin!");

         //Backstory
         Console.WriteLine(" BACKSTORY: You are a peasant trying to work his way through the castle to save the princess.");

         //Inventory tutorial
         Console.WriteLine("INVENTORY: You will pick up items along the way to help you save the princess.  When encountering an item, the program will ask you y or n.  Type y to collect the item.  Note: You can only store 5 items at a time in your sack!");
         Console.WriteLine("Lets try picking up an item!");
         Console.WriteLine("You have found an apple!  Would you like to put it in your sack? Type y or n!");

         //Handle the KeyDown event to determine the type of character entered into the control. 
         private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
         {
            // Initialize the flag to false.
            nonyn = false;

            // Determine whether the keystroke is a number from the top of the keyboard. 
            if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9)
            {
               // Determine whether the keystroke is a number from the keypad. 
               if (e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9)
               {
                  // Determine whether the keystroke is a backspace. 
                  if(e.KeyCode != Keys.Back)
                  {
                     // A non-numerical keystroke was pressed. 
                     // Set the flag to true and evaluate in KeyPress event.
                     nonyn = true;
                  }
               }
            }
            //If shift key was pressed, it's not a number. 
            if (Control.ModifierKeys == Keys.Shift) 
            {
               nonyn = true;
            }
         }

         // This event occurs after the KeyDown event and can be used to prevent 
         // characters from entering the control. 
         private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
         {
            // Check for the flag being set in the KeyDown event. 
            if (nonyn == true)
            {
               // Stop the character from being entered into the control since it is non-numerical.
               e.Handled = true;
            }
         }
      }
   }
}

它一直给我错误

“名称空间'System.Windows'中不存在类型或命名空间名称'Forms'”

表示System.Windows.Forms.KeyEventArgs

此外,名称“key”和“control”也无法在当前上下文中找到。

我是编程新手所以请不要讨厌!

3 个答案:

答案 0 :(得分:3)

这似乎是一个控制台应用程序,看起来您正在尝试确定按下了哪些键。问题是您正在使用表单应用程序中的按键事件,请查看Console.ReadKey()的文档,它可以帮助您找到所需内容。

http://msdn.microsoft.com/en-us/library/471w8d85(v=vs.110).aspx

修改

以下是如何使用它的一个示例:

   var key = Console.ReadKey();

   if (key.KeyChar.ToString() == "y")
   {
       Console.WriteLine("-- Yes!");
       Console.ReadKey();
   }
   else if (key.KeyChar.ToString() == "n")
   {
       Console.WriteLine("-- No!");
       Console.ReadKey();
   }
   else
   {
       Console.WriteLine("-- That isn't an option!");
       Console.ReadKey();
   }

答案 1 :(得分:0)

这里最可能的原因是您没有添加对System.Windows.Forms.dll程序集的引用。为此,请执行以下操作

  • 右键单击项目并选择“添加参考”
  • 转到框架部分
  • 选择System.Windows.Forms

答案 2 :(得分:0)

检查您的项目类型。以下是如何更改它: http://msdn.microsoft.com/en-us/library/vstudio/s3awkzkh(v=vs.100).aspx