【问题标题】:Non-invocable member cannot be used like a method?不可调用的成员不能像方法一样使用?
【发布时间】:2013-08-10 17:46:14
【问题描述】:

我的程序中不断出现以下错误:

'System.Windows.Forms.TextBox.Text' is a 'property' but used like a 'method'

Non-invocable member 'System.Windows.Forms.Control.Text' cannot be used like a method.

代码如下:

if (OffenceBox.Text != "")
   {
 AddBook(int.Parse(AgeBox.Text), NameBox.Text, AddressBox.Text, (HeightBox.Text), OffenceBox.Text());
   }
   else
   {
   MessageBox.Show("Age must be max 3 numbers in length");
   }
   }

我该如何解决这个问题?

编辑: 修复了错误,现在遇到了另一个: Argument 4: Cannot convert String to int 我似乎无法解决问题。

【问题讨论】:

    标签: c#


    【解决方案1】:

    正如错误明确指出的那样,OffenceBox.Text() 不是函数,因此没有意义。

    【讨论】:

      【解决方案2】:

      在您编写“OffenceBox.Text()”的地方,您需要将其替换为“OffenceBox.Text”。它是一个属性,而不是一个方法 - 线索在错误中!

      【讨论】:

      • 这行得通,但我遇到了另一个问题,Argument 4: Cannot convert String to int 我似乎无法修复它。
      • int.Parse(HeightBox.Text) 而不是 (HeightBox.Text)。 Text 属性是字符串类型,因此您需要尝试将其转换为 int,就像您为 AgeBox.Text 所做的那样。这些盒子可能无法转换为 int,因此您需要捕获生成的异常。
      【解决方案3】:

      发生这种情况是因为您尝试像方法一样使用属性“OffenceBox.Text”。尝试从 OffenceBox.Text() 中删除 parenteses,它会正常工作。

      请记住,您不能在类中创建同名的方法和属性。


      顺便说一句,一些别名可能会让你感到困惑,因为有时它是方法或属性,例如:“Count”别名:


      命名空间:System.Linq

      using System.Linq
      
      namespace Teste
      {
          public class TestLinq
          {
              public return Foo()
              {
                  var listX = new List<int>();
                  return listX.Count(x => x.Id == 1);
              }
          }
      }
      


      命名空间:System.Collections.Generic

      using System.Collections.Generic
      
      namespace Teste
      {
          public class TestList
          {
              public int Foo()
              {
                  var listX = new List<int>();
                  return listX.Count;
              }
          }
      }
      

      【讨论】:

        【解决方案4】:

        我遇到了同样的问题,并意识到删除括号是有效的。 如果您是唯一一个工作了一段时间的人,有时让其他人阅读您的代码会很有用。

        例如

          cmd.CommandType = CommandType.Text(); 
        

        替换: cmd.CommandType = CommandType.Text;

        【讨论】:

          猜你喜欢
          • 2013-07-07
          • 1970-01-01
          • 1970-01-01
          • 2017-04-11
          • 2016-05-01
          • 2016-04-11
          • 2018-05-31
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多