.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);
Reference
이 문제에 관하여(.NET Framework의 DataGridView에 날짜 추가(C++)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/takamon9/items/4fc35fa1d310a4a21046
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
.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);
Reference
이 문제에 관하여(.NET Framework의 DataGridView에 날짜 추가(C++)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/takamon9/items/4fc35fa1d310a4a21046
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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);
Reference
이 문제에 관하여(.NET Framework의 DataGridView에 날짜 추가(C++)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/takamon9/items/4fc35fa1d310a4a21046텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)