Top.Mail.Ru
Ответы

DataGridView winform c++

Цель создать матрицу, использую winforms, проблема в том, что при запуске приложения и вводе значений появляется новая строка в DataGridView, и это возможно до бесконечность, а я хочу чтобы кол-во строк было ограниченным как количество столбцов

По дате
По рейтингу
Аватар пользователя
Мыслитель
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
 #include <windows.h> 
#include <vcclr.h> 
#include <cliext/vector> 
#include <cliext/adapter> 
#include <msclr/marshal_cppstd.h> 
 
using namespace System; 
using namespace System::Windows::Forms; 
 
void InitializeDataGridView(DataGridView^ dataGridView, int rowCount, int columnCount) { 
    // Устанавливаем количество столбцов 
    dataGridView->ColumnCount = columnCount; 
 
    // Устанавливаем количество строк 
    dataGridView->RowCount = rowCount; 
 
    // Запрещаем пользователю добавлять новые строки 
    dataGridView->AllowUserToAddRows = false; 
 
    // Запрещаем пользователю удалять строки 
    dataGridView->AllowUserToDeleteRows = false; 
} 
 
// Пример использования 
[STAThread] 
void Main() { 
    Application::EnableVisualStyles(); 
    Application::SetCompatibleTextRenderingDefault(false); 
 
    // Создаем форму 
    Form^ form = gcnew Form(); 
    form->Text = "DataGridView Example"; 
 
    // Создаем DataGridView 
    DataGridView^ dataGridView = gcnew DataGridView(); 
    dataGridView->Dock = DockStyle::Fill; 
 
    // Инициализируем DataGridView с 5 строками и 3 столбцами 
    InitializeDataGridView(dataGridView, 5, 3); 
 
    // Добавляем DataGridView на форму 
    form->Controls->Add(dataGridView); 
 
    // Запуск приложения 
    Application::Run(form); 
} 
 
123456789101112131415161718192021222324252627
 void dataGridView_UserAddedRow(Object^ sender, DataGridViewRowEventArgs^ e) { 
    DataGridView^ dgv = dynamic_cast<DataGridView^>(sender); 
    if (dgv->Rows->Count > 5) { // Если количество строк больше 5 
        dgv->Rows->RemoveAt(dgv->Rows->Count - 1); // Удаляем последнюю добавленную строку 
    } 
} 
 
[STAThread] 
void Main() { 
    Application::EnableVisualStyles(); 
    Application::SetCompatibleTextRenderingDefault(false); 
 
    Form^ form = gcnew Form(); 
    form->Text = "DataGridView Example"; 
 
    DataGridView^ dataGridView = gcnew DataGridView(); 
    dataGridView->Dock = DockStyle::Fill; 
 
    InitializeDataGridView(dataGridView, 5, 3); 
 
    dataGridView->UserAddedRow += gcnew DataGridViewRowEventHandler(dataGridView_UserAddedRow); 
 
    form->Controls->Add(dataGridView); 
 
    Application::Run(form); 
} 
 

Этот код устанавливает фиксированное количество строк и столбцов в DataGridView и предотвращает добавление новых строк как пользователем, так и программно.

Аватар пользователя
Ученик

Все равно ошибка в конструкторе, приложение запускается, но мне нужен рабочий конструктор , с ним удобно моделировать приложение

Аватар пользователя
Мыслитель
12345678
     // Инициализация компонентов и DataGridView  
    void InitializeComponent() {  
        this->dataGridView = gcnew DataGridView();  
        this->SuspendLayout();  
          
        // Настройки DataGridView  
        this->dataGridView->Location = System::Drawing::Point(13, 13);  
  
Аватар пользователя
Мыслитель
123456789101112131415
        this->dataGridView->Size = System::Drawing::Size(300, 200);   
   
        // Устанавливаем количество столбцов   
        this->dataGridView->ColumnCount = 3;   
   
        // Устанавливаем количество строк (например, 5)   
        this->dataGridView->RowCount = 5;   
   
        // Запрещаем добавление новых строк   
        this->dataGridView->AllowUserToAddRows = false;   
   
        // Запрещаем удаление строк пользователем   
        this->dataGridView->AllowUserToDeleteRows = false;   
   
  
Аватар пользователя
Мыслитель
12345678910111213141516171819
        // Добавляем DataGridView в форму    
        this->Controls->Add(this->dataGridView);    
    
        // Настройка формы    
        this->Text = "DataGridView Example";    
        this->ClientSize = System::Drawing::Size(320, 240);    
    
        this->ResumeLayout(false);    
    }    
};    
    
// Главная функция для запуска приложения    
[STAThread]    
int main() {    
    Application::EnableVisualStyles();    
    Application::SetCompatibleTextRenderingDefault(false);    
    Application::Run(gcnew MainForm());    
    return 0;    
}  
Аватар пользователя
Мыслитель


Видео по теме