Question

Here's what I have.

public static void Person_home_phone_TextChanged(object sender, EventArgs e) { ... }

Is there any way to access non-static methods from the same or another class from inside this static method?

I need grab the text in the Person_home_phone text box and save it to a class data member.

Was it helpful?

Solution

Example() -> Example

You would just need to create an instance of the type then call the non-static, from a static method.

public class Example(){

    public static void StaticExample()
    {

        Example example = new Example();
        example.NonStatic();
    }

    public void NonStatic()
    {

    }

}

OTHER TIPS

You need to have a instance of the class to call a non-static method.

Solution #1: Instantiate a new instance of Car every time the method is called.

 public static void DoSomething()
        {
            Car c = new Car();
            c.NonStaticMethod();
        }

Solution #2: Pass a Car to the method.

 public static void DoSomething(Car c)
        {
            c.NonStaticMethod();
        }

Solution #3:

Use a singleton Car to support the static method. (If calls from multiple threads are a possibility, you might also need locking. Note that System.Windows.Forms.Timer does not introduce a thread.)

 public class Car
    {
        private static Car m_Singleton = new Car();

        public static void DoSomething()
        {
            m_Singleton.NonStaticMethod();
        } 

Note that you have not explained your memory problems with Timer. It is very possible that there is a solution to that underlying problem.

Instance methods (vel. non-static) can only be called in context of an instance of that class. So you can call it, but you have to have an object of that class available somewhere in your static method.

A non-static method requires an instance of the class. Unless you have passed in an instance, or created an instance in your method, you cannot call a non-static method, as you have no idea what instance of the class that method should operate on.

You need an instance of the class class to call the non-static method.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top