Как добавить общий код C # в проект / решение Visual C # 2008 Express? - PullRequest
1 голос
/ 08 января 2009

(Я все еще чувствую себя новичком в среде MS Visual ... так что, пожалуйста, терпите!)

Я использую Microsoft Visual C # 2008 Express Edition.

У меня есть проект, и в этом проекте есть две разные формы. Файл .cs для каждой формы начинается с:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Common;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace MyNameSpace
{
    public partial class MyFormName : Form
    {
...

(... а второй - "MyFormName2", но никаких отличий кроме этого нет)

Я хочу написать функцию, к которой я знаю, что обе формы понадобятся для доступа. Я щелкнул правой кнопкой мыши по своему проекту, выбрал «Добавить», выбрал «Новый элемент», затем «Кодовый файл» и назвал мой файл «Common.cs», и он дал мне совершенно пустой файл, который находится в моем проекте.

Как мне это настроить ...? Я думал, что должен сделать следующее ...

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Common;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace MyNameSpace
{
}

... но потом, когда я пытаюсь добавить такую ​​функцию, как:

public void mytestfunc () { } в этом пространстве имен я получаю следующую ошибку:

"Ожидаемый класс, делегат, перечисление, интерфейс или структура"

Как настроить все, чтобы «mytestfunc» был доступен как для MyFormName, так и для MyFormName2?

Спасибо!

-Adeena

UPDATE: Понимаю (сейчас), что все должно быть в классе, но тогда я не понимаю, как это действительно использовать. Значит ли это, что я должен создать объект? Эта общая функция просто математика ...

так что теперь, если у меня есть это:

namespace MyNameSpace
{
    public class MyCommonClass
    {
        public void testFunc()
        {
            MessageBox.Show("Hee hee!");
            return;
        }
    }
}

... как мне вызвать testFunc из моей формы? Должен ли я сделать следующее:

MyCommonClass temp = new MyCommonClass;
temp.testFunc();

или есть другой способ вызвать testFunc?

Ответы [ 4 ]

2 голосов
/ 08 января 2009

Если вы делаете что-то вроде:

namespace MyNameSpace
{
    public class myclass
    {
        public myMethod()
        {
            // Code
        }
    }
}

Вы сможете создать экземпляр и получить к нему доступ. Если вы измените его на:

namespace MyNameSpace
{
    public class myclass
    {
        public static myMethod()
        {
            // Code
        }
    }
}

Вы сможете вызывать myClass.myMethod без создания нового myClass.

1 голос
/ 08 января 2009

Короткий ответ: все должно быть внутри класса; Я бы посоветовал вам сесть за базовый учебник , чтобы помочь вам разобраться с основами ...

0 голосов
/ 08 января 2009

Если вызываемая вами функция не связана с формами, сделайте ее статической

namespace myns
{
    public static class myhelper
    {
        public static void DoSomething()
        {
        }
    }
}

и вызовите метод, используя myhelper.DoSomething ();

Если функция, которую вы хотите вызвать, как-то связана с формой, например, общие функциональные возможности для нескольких форм, наследуют класс от формы (не нуждается в визуальной форме) и делают его базовым классом визуальных форм:

namespace myns
{
    public class MyFormBase : Form
    {
        protected void DoSomethingWithTheForm()
        {
        }
    }
}

и в вашей форме .cs:

namespace myns
{
    public partial class MyFormName : MyFormBase
    {
    }
}
0 голосов
/ 08 января 2009

Код должен быть внутри классов.

Это будет выглядеть примерно так:

using System;

namespace MyNameSpace
{
   public class CommonHelper
   {
       public string FormatMyData(object obj)
       {
            //do something
            return String.Empty;
       }
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...