Передача ценности между двумя проектами - PullRequest
2 голосов
/ 18 октября 2011

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

Подробности моего проекта:

Project1                Project2
All forms and object    Only 1 MDI Forms Containing ManuStrip

Я хочу прочитать данные MDI Forms при отображении форм project1 Пример приведен ниже:

//This is on Project2 MDI Forms

    private void accountMasterToolStripMenuItem_Click(object sender, EventArgs e)
    {
        INVOICE1.Form24 f24 = new INVOICE1.Form24();
        f24.PFrom.Text = label4.Text;
        f24.PTo.Text = label5.Text;
        f24.Namee.Text = textBox1.Text;
        f24.ID.Text = label6.Text;
        f24.ShowDialog();



    }

Я создал свойства для того же самого в формах проекта1

   public Label PFrom
    {
        get { return label14; }
        set { label14 = value; }

    }
    public Label PTo
    {
        get { return label16; }
        set { label16 = value; }

    }
    public Label Namee
    {
        get { return label2; }
        set { label2 = value; }

    }
    public Label ID
    {
        get { return label3; }
        set { label3 = value; }

    }

Значение, переданное из MDI в Project1, не отображается в форме 24 Project1. Там нет ошибки. Форма 24 Показывает без значения, которые передаются из формы MDI.

Почему Значение не отображается в форме 24 проекта1? И что такое решение?

Ответы [ 2 ]

3 голосов
/ 18 октября 2011

Возможно, вы забыли добавить ссылку на проект Project1 в Project2.В обозревателе решений щелкните правой кнопкой мыши Project2 и выберите «Добавить ссылку», затем в разделе «Проекты» выберите Project1.

Кроме того, если два проекта имеют разные пространства имен, вам нужно поместить

using Project1;  // replace "Project1" with the namespace of your Project1

вверху исходного файла Project2.


Если ошибок компилятора нет, проблема, скорее всего, связана со ссылками на проект.Возможно, у вас есть код в конструкторе Form24 или событие Load, которое очищает эти метки


В качестве примечания, вместо того, чтобы указывать метки как свойства, просто предоставьте их свойство Text:

public string PFrom       
{           
    get { return label14.Text; }           
    set { label14.Text = value; }          
}   
0 голосов
/ 27 сентября 2017

Я столкнулся с той же проблемой .. и ответ был прост: это невозможно. Однако вы можете взломать эту ситуацию ... используя базу данных или общее решение, в котором вы установите связь между двумя проектами. Или используйте 3 проекта и создайте коммуникационный драйвер, который будет использоваться в 1 и 2 проекте. Как вы это сделаете, не измеряется.

  1. ситуация: база данных

  2. ситуация: совместное решение с протоколом связи

  3. возможно, создание DLL также поможет

Мое личное решение было таким: (проверено на реальном веб-сайте и в отдельном фоновом проекте)

Для создания общего проекта используйте шаблон VS (общий проект). Затем создайте свой класс и внутри каждого проекта включите в справочный раздел проекта ваш общий проект. Так, например, Проект A, Проект B, Проект SharedPr -> содержит протокол связи

Проект A -> Ссылки-> Добавить ссылку -> Общий проект.

Проект B -> Ссылки-> Добавить ссылку -> Общий проект.

Этот протокол связи - это что-то вроде драйвера, который вам нужно создать.

Легко сделать это с помощью файла. Создать скрытый файл, в который пишет проект A, а проект B читает. Сохраните в своем файле строку json или массив json, затем прочитайте все строки и десериализуйте все, например, с помощью пакета Newtonsoft.Json NuGet.

Надеюсь, это поможет.

...