.NET Framework의 DataGridView에 날짜 추가(C++)

10743 단어 C++.NETFramework.NET

DataGridView란?



양식에 엑셀과 같은 그리드를 만듭니다.
양식 내의 셀은 자유롭게 추가, 삭제할 수 있는 기능이 데이터 그리드 뷰에는 장비되어 있습니다. 데이터 그리드 뷰는 Visual Studio C++ 2005 버전부터 사용할 수 있습니다.

이번에는 이 그리드에 날짜를 추가해 보겠습니다. 아래 그림의 Date 부분이 그렇게 됩니다.



C++ 코딩 해설



.NET이라고 하면, C#이 가장 많이 사용되는 언어일지도 모릅니다만, C++에서도 간단하게 폼 어플리케이션을 작성할 수 있습니다. C/C++에 익숙한 사람은 같은 언어로 작성하는 편이 작업이 편해집니다.

날짜를 얻으려면 #include <time.h>를 포함하십시오.tm 구조체를 만들고 현재 시간을 localtime(&timer) 로 가져옵니다.

구조체에는 9개의 멤버가 있습니다만, 년과 달에는 주의가 들어갑니다. tm_year 는 1900년부터의 연수, tm_mon 는 0부터의 월수이므로, 각각 1900과 1을 플러스 해 코드에 씁니다.

또한 멤버는 int 형식이므로 Datagridiview에 추가하려면 System::String 형식을 수정해야 합니다.

int→string→System::String으로 변환합니다.

int에서 string은 C++라면 단순히 stringstream을 사용하는 것이 가장 간단하다고 생각합니다. <sstream> と <string> 를 포함합니다.

setw()로 자릿수를 설정하고 setfill()로 숫자 틈을 0으로 채웁니다. 아무것도 지정하지 않으면, 2017年1月1日1時0分 가 되면(자) 불모호한 표시가 되어 버립니다. 이것을 PC답게 2017年01月01日01時00分 와 같이 표시시킵니다. 이를 사용하려면 #include <iomanip> 를 포함하십시오.
stringstream ss;
ss << year << "/" << setw(2) << setfill('0') << month << "/" << setw(2) << setfill('0') << day << "," << setw(2) << setfill('0') << hour << ":" << setw(2) << setfill('0') << minute << ":" << setw(2) << setfill('0') << seconds;


표준 문자열을 System::String 로 변환하려면 String^ dateTime = gcnew String(getTime.c_str()); 와 같이 설명합니다. 이 형식으로 변환하지 않으면 그리드에 날짜를 표시할 수 없습니다.

그리드 가로축 데이터 배열을 만듭니다. 날짜, ID, Name의 순서가 됩니다. ID와 Name도 System::String 형식으로 변환합니다.
array<String^>^ rows0 = gcnew array<String^>{dateTime,idNum,name};`

그리드에 추가합니다. DataGridViewRowCollection 에서 ROW 배열 데이터를 함께 추가합니다.
DataGridViewRowCollection^ rows = this->dataGridView1->Rows;
rows->Add(rows0);



이번에 만든 코드



버튼 클릭에 코드를 그대로 추가해도 좋지만, 함수로 해 버리면 코드를 알기 쉬워집니다.
    time_t timer = time(0);

    struct tm *timeStruct = localtime(&timer);

    int year = 1900 + timeStruct->tm_year;
    int month = 1 + timeStruct->tm_mon;
    int day = timeStruct->tm_mday;
    int hour = timeStruct->tm_hour;
    int minute = timeStruct->tm_min;
    int seconds = timeStruct->tm_sec;
    String^ idNum = textBox1->Text;
    String^ name = textBox2->Text;

    stringstream ss;
    ss << year << "/" << setw(2) << setfill('0') << month << "/" << setw(2) << setfill('0') << day << "," << setw(2) << setfill('0') << hour << ":" << setw(2) << setfill('0') << minute << ":" << setw(2) << setfill('0') << seconds;
    string getTime = ss.str();
    String^ dateTime = gcnew String(getTime.c_str());

    array<String^>^ rows0 = gcnew array<String^>{dateTime,idNum,name};
    DataGridViewRowCollection^ rows = this->dataGridView1->Rows;
    rows->Add(rows0);



좋은 웹페이지 즐겨찾기