Поэтому я использую Visual C ++ 2013 для создания приложений с графическим интерфейсом, используя MFC. Я встроил форму C # Windows в графический интерфейс, используя это руководство и оттуда использовал это руководство, добавить привязку данных в окно 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 … я получаю тип данных, но с chart1 все, что я получаю, это <«Ошибка типа»>
Любая помощь будет принята с благодарностью.
Обновление: так что после сильной боли и стуча головой по столу, я нашел обходной путь к своей проблеме. Если кто-то в будущем столкнется с такой же проблемой и столкнется с этим постом, это то, что сработало для меня: поскольку я не мог манипулировать 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);
и это работает просто отлично, добавляет точки к графику, и я теперь счастливый турист.
Других решений пока нет …