不可调用的成员不能像方法一样使用?

时间:2013-08-08 20:43:09

标签: c#

我的程序中一直出现以下错误:

'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我似乎无法解决问题。

4 个答案:

答案 0 :(得分:67)

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

答案 1 :(得分:7)

之所以发生这种情况,是因为您尝试使用属性“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;
        }
    }
}

答案 2 :(得分:4)

由于错误明确指出,OffenceBox.Text()不是函数,因此没有意义。

答案 3 :(得分:1)

I had the same issue and realized that removing the parentheses worked. Sometimes having someone else read your code can be useful if you have been the only one working on it for some time.

E.g.

  cmd.CommandType = CommandType.Text(); 

Replace: cmd.CommandType = CommandType.Text;