2013-12-19 283 views
0

这是我的代码。C#命名空间'System.Windows'中不存在类型或命名空间名称'Forms'

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’”

在那里说System.Windows.Forms的.KeyEventArgs

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

即时通讯编程新手,请不要讨厌!

+3

你确定这是一个Windows窗体应用程序? – PoweredByOrange

+1

'命名空间'System.Windows'中不存在类型或命名空间名称'Forms' - 这是正确的。 'Forms'类存在于'System.Windows.Forms'中。 – Brian

回答

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(); 
    } 
0

这里最可能的原因是您没有添加对System.Windows.Forms.dll组件的引用。为了做到这一点做以下

  • 右键单击该项目并选择“添加引用”
  • 转到框架部分
  • 选择System.Windows.Forms的
相关问题