Привязка данных DDX в Windows Forms не может найти метод класса

Поэтому я использую Visual C++ 2013 для создания приложений с графическим интерфейсом, используя MFC. Я встроил форму C# Windows в GUI, используя этот учебник, и оттуда использовал этот учебник, чтобы добавить привязку данных к окну Windows Form. Теперь я могу использовать следующую строку в C++ для изменения свойств кнопки и текста:

m_MyControl.GetControl()->textBox1->Text = "text changed";
m_MyControl.GetControl()->button1->Text = "text changed";

Но когда я пытаюсь этим же способом изменить свойства диаграммы, я добавляю в форму Windows, например, так:

m_MyControl.GetControl()->chart1->Name = "test";

тогда я получаю ошибку,

error C2039: 'Name' : is not a member of System::Windows::Forms::DataVisualization::Charting::Chart'

Я понятия не имею, почему это происходит, так как chart1 объявлен как public вместе с button1 и textBox1 внутри файла дизайнера C#. Единственное отличие, которое я вижу в этом, заключается в том, что при наведении курсора на кнопку button1 или textbox1 в строке m_Mycontrol... я получаю тип данных, но с диаграммой1 все, что я получаю, это <'error-type'>

Любая помощь будет принята с благодарностью.

1 ответ

Решение

Обновление: так что после сильной боли и стуча головой по столу, я нашел обходной путь к своей проблеме. На случай, если кто-то в будущем столкнется с такой же проблемой и столкнется с этим постом, это то, что мне помогло: поскольку я не мог манипулировать chart1 непосредственно со стороны C++, но я мог со стороны C#, я просто добавил расширенное текстовое поле в форма окна, сделав его слишком маленьким, чтобы скрыть его, спрятал его за диаграммой и использовал

m_MyControl.GetControl()->richtextBox1->Text = " 1 2 \n 2 2 \n 3 3";

метод ввода данных в расширенное текстовое поле, которое я хотел поместить в диаграмму (сторона C++). Затем я добавил обработчик событий на стороне C#, чтобы при каждом обновлении расширенного текстового поля диаграмма анализировала строку, брала эти данные и выводила их на график.

РЕДАКТИРОВАТЬ: нашел фактическую причину, по которой это не работает. Под проектом> свойства> рамки и ссылки мне нужно было добавить system.windows.forms.datavisualization, чтобы VC++ знал, где найти функции-члены. Теперь я могу позвонить

m_ctrl1.GetControl()->chart1->Series[0]->Points->AddXY(0,0);

и это работает просто отлично, добавляет точки к графику, и я теперь счастливый турист.

Другие вопросы по тегам