Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.73/26: Рейтинг темы: голосов - 26, средняя оценка - 4.73
2 / 2 / 1
Регистрация: 29.09.2015
Сообщений: 41

Clr/ visual c++

22.01.2016, 18:03. Показов 5883. Ответов 52
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Есть стандартная форма "main.h" с разными элементами. В ней подключаю файл с класcом в котором хочу редактировать эти элементы- "Properties.h", но оказывается что файл с классом не видит их.
В "main.h" подключаю класc:
C++
1
#include "Properties.h"
Файл "Properties.h":
C++
1
2
3
4
5
6
7
8
9
10
#ifndef SYMBOL_H_
#define SYMBOL_H_
class ProPerties
{
public:
    int a;
    ProPerties();
    ~ProPerties();
};
#endif
Файл "Properties.cpp":
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "Properties.h"
using namespace System;
 
ProPerties::ProPerties()
{
    this->a = 5;
    lbl_next->Text = L"Next"; // Здесь ошибка
}
 
ProPerties::~ProPerties()
{
}
Всё удачно подключается,проблема только в видимости элементов формы.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.01.2016, 18:03
Ответы с готовыми решениями:

создание массива кнопок Visual C++ CLR
Не подскажет кто как создать массив кнопок типа Button?:)

Не видит класс. visual c++ 2013 CLR+WinForm
Задача реализовать класс дробь на c++ с интерфейсом WinForms. Создал CLR проект и в него добавил WinForm. Ниже добавил описание своего...

Подключение mouse_event в Visual C++ CLR Windows Forms
Пишу кликер - по нажатию на кнопку "Перейти в точку" - нужно переместить курсор на координаты x, y и кликнуть левой клавишей мыши. Писал...

52
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
22.01.2016, 19:54
Цитата Сообщение от 0101 Посмотреть сообщение
В "main.h" подключаю класc:
C++
1
#include "Properties.h"
Зачем? Вот здесь компилятор должен видеть, что такое lbl_next и пр.:
Цитата Сообщение от 0101 Посмотреть сообщение
Файл "Properties.cpp":
0
2 / 2 / 1
Регистрация: 29.09.2015
Сообщений: 41
22.01.2016, 20:34  [ТС]
Цитата Сообщение от nord_v Посмотреть сообщение
Зачем? Вот здесь компилятор должен видеть, что такое lbl_next и пр.:
Для лучшей структуризации кода,так как в "main.h" уже больше 1к строк кода. В "Properties.cpp" компилятор не видит.
0
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
22.01.2016, 21:07
Цитата Сообщение от 0101 Посмотреть сообщение
Для лучшей структуризации кода,так как в "main.h" уже больше 1к строк кода. В "Properties.cpp" компилятор не видит.
Чтобы компилятор, в Properties.cpp, видел содержимое main.h, там должен быть подключен этот хедер, или напрямую, или через подключение в Properties.h.
0
2 / 2 / 1
Регистрация: 29.09.2015
Сообщений: 41
22.01.2016, 21:12  [ТС]
Цитата Сообщение от nord_v Посмотреть сообщение
Чтобы компилятор, в Properties.cpp, видел содержимое main.h, там должен быть подключен этот хедер, или напрямую, или через подключение в Properties.h.
Вот так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "Properties.h"
#include "main.h"
using namespace System;
 
ProPerties::ProPerties()
{
    this->a = 5;
    lbl_next->Text = L"Next"; // Здесь ошибка
}
 
ProPerties::~ProPerties()
{
}
Если да ,то так тоже не работает.
0
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
22.01.2016, 21:25
Цитата Сообщение от 0101 Посмотреть сообщение
Если да ,то так тоже не работает.
Что пишет?
0
2 / 2 / 1
Регистрация: 29.09.2015
Сообщений: 41
22.01.2016, 21:27  [ТС]
Цитата Сообщение от nord_v Посмотреть сообщение
Что пишет?
Та же ошибка что и без инклуда.
error C2065: 'lbl_next' : undeclared identifier
0
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
22.01.2016, 21:30
Проект пересобирал? В main.h есть lbl_next?
0
2 / 2 / 1
Регистрация: 29.09.2015
Сообщений: 41
22.01.2016, 21:33  [ТС]
Цитата Сообщение от nord_v Посмотреть сообщение
Проект пересобирал? В main.h есть lbl_next?
lbl_next в main.h есть.
Проэкт не пересобирал, думаю нет смысла это делать так как в самом начале разработки была эта проблема .
0
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
22.01.2016, 21:45
Цитата Сообщение от 0101 Посмотреть сообщение
так как в самом начале разработки была эта проблема .
В самом начале у тебя файл был подключен там, где нужно?
Цитата Сообщение от 0101 Посмотреть сообщение
bl_next в main.h есть.
Покажи где объявлена.
0
2 / 2 / 1
Регистрация: 29.09.2015
Сообщений: 41
22.01.2016, 21:51  [ТС]
Цитата Сообщение от nord_v Посмотреть сообщение
В самом начале у тебя файл был подключен там, где нужно?
Всё правильно подключено. Я создал новый проэкт но проблема та же.
Цитата Сообщение от nord_v Посмотреть сообщение
Покажи где объявлена.
Это код с main. lbl_next 100% обьявлено.
C++
1
2
3
4
5
6
7
8
9
// lbl_next
            // 
            this->lbl_next->AutoSize = true;
            this->lbl_next->Location = System::Drawing::Point(218, 158);
            this->lbl_next->Name = L"lbl_next";
            this->lbl_next->Size = System::Drawing::Size(35, 13);
            this->lbl_next->TabIndex = 0;
            this->lbl_next->Text = L"label1";
            //
Наверное нужно как то по другому подключать.
0
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
22.01.2016, 22:04
Цитата Сообщение от 0101 Посмотреть сообщение
lbl_next 100% обьявлено.
Где объявлена? В глобальной области? В классе? Класс где объявлен? В пространстве имён?
Цитата Сообщение от nord_v Посмотреть сообщение
Покажи где объявлена.
Или сам разбирайся, ясновидящих тут нет.
0
2 / 2 / 1
Регистрация: 29.09.2015
Сообщений: 41
22.01.2016, 22:08  [ТС]
Цитата Сообщение от nord_v Посмотреть сообщение
Где объявлена? В глобальной области? В классе? Класс где объявлен? В пространстве имён?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#pragma once
#include "Properties.h"
namespace test {
 
    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
 
    /// <summary>
    /// Summary for main
    /// </summary>
    public ref class main : public System::Windows::Forms::Form
    {
    public:
        main(void)
        {
            InitializeComponent();
            //
            //TODO: Add the constructor code here
            //
        }
 
    protected:
        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        ~main()
        {
            if (components)
            {
                delete components;
            }
        }
    private: System::Windows::Forms::Label^  lbl_next;
    protected:
 
    protected:
 
    private:
        /// <summary>
        /// Required designer variable.
        /// </summary>
        System::ComponentModel::Container ^components;
 
#pragma region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        void InitializeComponent(void)
        {
            this->lbl_next = (gcnew System::Windows::Forms::Label());
            this->SuspendLayout();
            // 
            // lbl_next
            // 
            this->lbl_next->AutoSize = true;
            this->lbl_next->Location = System::Drawing::Point(218, 158);
            this->lbl_next->Name = L"lbl_next";
            this->lbl_next->Size = System::Drawing::Size(35, 13);
            this->lbl_next->TabIndex = 0;
            this->lbl_next->Text = L"label1";
            // 
            // main
            // 
            this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
            this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
            this->ClientSize = System::Drawing::Size(284, 261);
            this->Controls->Add(this->lbl_next);
            this->Name = L"main";
            this->Text = L"main";
            this->ResumeLayout(false);
            this->PerformLayout();
 
        }
#pragma endregion
    };
}
0
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
22.01.2016, 22:16
Если так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "Properties.h"
#include "main.h"
using namespace System;
 
ProPerties::ProPerties()
{
    this->a = 5;
    test::lbl_next->Text = L"Next"; // Здесь ошибка
}
 
ProPerties::~ProPerties()
{
}
0
2 / 2 / 1
Регистрация: 29.09.2015
Сообщений: 41
22.01.2016, 22:19  [ТС]
Цитата Сообщение от nord_v Посмотреть сообщение
Если так:
Не помогло.
0
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
22.01.2016, 22:20
Или так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "Properties.h"
#include "main.h"
using namespace System;
 
ProPerties::ProPerties()
{
    this->a = 5;
    test::main::lbl_next->Text = L"Next"; // Здесь ошибка
}
 
ProPerties::~ProPerties()
{
}
0
2 / 2 / 1
Регистрация: 29.09.2015
Сообщений: 41
22.01.2016, 22:22  [ТС]
Цитата Сообщение от nord_v Посмотреть сообщение
Или так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
include "Properties.h"
#include "main.h"
using namespace System;
 
ProPerties::ProPerties()
{
    this->a = 5;
    test::main::lbl_next->Text = L"Next"; // Здесь ошибка
}
 
ProPerties::~ProPerties()
{
}
Так тоже нет.
0
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
22.01.2016, 22:24
Цитата Сообщение от 0101 Посмотреть сообщение
Так тоже нет.
Ошибку ту же самую пишет?
0
2 / 2 / 1
Регистрация: 29.09.2015
Сообщений: 41
22.01.2016, 22:27  [ТС]
Цитата Сообщение от nord_v Посмотреть сообщение
Ошибку ту же самую пишет?
Нет, другая ошибка:
Error member "test::main::lbl_next" is inaccessible.
0
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
22.01.2016, 22:34
Цитата Сообщение от 0101 Посмотреть сообщение
Нет, другая ошибка:
Значит он её увидел, но она private, доступа нет.

Добавлено через 4 минуты
Если бы это был С++, то я бы так сказал: нужен метод класса main для доступа к этой переменной. Эта переменная должна быть или статической переменной класса, тогда и метод должен быть статическим, или, если переменная не статическая, то нужен нестатический метод и объект класса main для доступа к этой переменной.
Но тут формы, которых я не знаю. Тут может быть своя специфика. Лучше здесь спроси:
https://www.cyberforum.ru/cpp-cli-winforms/
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.01.2016, 22:34
Помогаю со студенческими работами здесь

Пустой проект CLR
создаю пустой проект CLR, добавляю форму, прописываю ....... using namespace Project1; ....... int main() { ...

Звук и границы кнопок в C++ CLR
На днях появились вопросы, на которые очень хотелось бы получить ответы. Первый коснулся музыки. Реализована ли как-то в WinForm работа с...

Разместить CLR-форму по центру
Всем привет, хочу задать довольно легкий ,банальный вопрос, но найти я в интернете ничего не смог. Так вот сам вопрос: Как сделать...

Вывести массив на форму clr
Ребят в консоли понятно, а вот на форму... Нужно что бы в столбцы выходило, и на форме что выбирать TextBox? Файл print.cpp void...

CLR перевод строки в массив чисел
записано в Label числа через пробел. туда они считываются из файла. мне надо их записать в массив целочисленный помогите пожалуйста!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru