본문 바로가기

개발언어/C#191

[C#] 폴더 유무체크 / 폴더 만들기 (생성하기) 아래는 C#으로 폴더를 생성하는 방법입니다. string folderPath = "D:/createFolder"; DirectoryInfo di = new DirectoryInfo(folderPath); // 만약 폴더가 존재하지 않으면 if(di.Exists == false) { di.Create(); } 위의 간단한 소스로 폴더를 생성하실 수 있습니다. 변수 folderPath에 생성할 폴더의 경로를 string으로 넣어주신 후에 DirectoryInfo를 활용하여 폴더의 유무를 체크한 후 폴더를 생성하는 소스입니다. 감사합니다. 2020. 11. 30.
[C#] Marshal.Copy()란 무엇인가? Marshal.Copy()에 대해 조사해봤습니다. https://msdn.microsoft.com/ko-kr/library/ms146631(v=vs.110).aspx에 설명이 있습니다. Copies data from an unmanaged memory pointer to a managed 8-bit unsigned integer array. 관리되지 않는?(unmanaged) 메모리를 가리키는 포인터의 데이터를 관리가 되는?(managaed) 8비트 unsigned integer 배열로 복사하는 함수라고 합니다. unmanaged 메모리, managed 메모리가 무엇인지 찾아봤습니다. https://stackoverflow.com/questions/1345377/unmanaged-memory-and-ma.. 2020. 11. 27.
[c#] 경과 시간을 표시할 때 String saveTempString = string.empty; DateTime tempDateTime = DateTime.Now; // 시작하는 위치 ... 처리 로직 TimeSpan diff = DateTime.Now - tempDateTime; saveTempString = string.Format("{0:hh\\:mm\\:ss}", diff); 또는 saveTempString = string.Format("{0:00}:{1:00}:{2:00}", diff.Hours, diff.Minutes, diff.Seconds); Console.WriteLine(saveTempString); 출처: https://kwange.tistory.com/86 [KSK의 IT 블로그] 2020. 11. 24.
[c#] String.Format && string 자릿수 맞추기[출처] |작성자 String Format for Int [C#] Integer numbers can be formatted in .NET in many ways. You can use static method String.Format or instance method int.ToString. Following examples shows how to align numbers (with spaces or zeroes), how to format negative numbers or how to do custom formatting like phone numbers. Add zeroes before number To add zeroes before a number, use colon separator „:“and write a.. 2020. 11. 24.
(c#) WinForm 창 크기 조절하기 [C#/WinForm] 윈도우 폼 크기 조절하기 윈도우 창 크기 조절하기 속성 - AutoSize false 크기 조절 불가 true 크기 조절 가능 - AutoSizeMode GrowOnly 수동으로 조절가능, 설정된 크기보다 작게 조절은 불가능 GrowAndShrink 폼 비율 유지, 수동으로 조절 불가능 - FormBorderStyle None 폼 외곽 없음, 크기 변경 불가 FixedSingle 폼 외곽 단순 선, 크기 변경 불가 Fixed3D 폼 외곽 3D선, 크기 변경 불가 FixedDialog 폼 외곽 두꺼운 선, 크기 변경 불가 Sizable 크기 변경 가능 (폼 외곽은 fixedsingle과 같음) FixedToolWindow 도구창, 크기 변경 불가능 SizableToolWindow 도.. 2020. 11. 20.
(c#) 폼의 크기가 변할때, 컨트롤의 사이즈및 위치 폼의 사이즈가 변할때 컨트롤의 사이즈나 위치를 변하게 하고자할때.. 속성화면에서 Anchor를 수정했는데.. 생각처럼 잘 따라주지 않는다. 그래서 폼생성시 소스로 지정해주면 잘된다. public frmMain() { InitializeComponent(); //폼의 크기 this.Width = 1040; this.Height = 620; //폼의 사이즈변경시 컨트롤크기 및 위치 변경 this.groupBox1.Anchor = (AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Right); this.pbLeftGraph.Anchor = (AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Right); this.btnRi.. 2020. 11. 20.
[C#] WinForm 스레드(Thread)에서 컨트롤(Control) 호출 크로스 스레드 에러 스레드에서 직접 컨트롤을 접근하게 되면 크로스 스레드 에러가 발생합니다. 스레드에서 컨트롤을 접근하는 것은 컨트롤을 일관되지 않은 상태로 만들 수 있고, 심각한 오류나 프로그램 중단을 초래할 수 있습니다. 따라서 스레드에서 직접 컨트롤을 접근하는 것은 안전하지 않은 호출 방법입니다. 다음은 크로스 스레드 에러를 발생시키는 예제 코드입니다. private void Button1_Click(object sender, EventArgs e) { thread = new Thread(SetName); thread.Start(); } private void SetName() { txtName.Text = "SSABI"; // 크로스 스레드 에러 발생! } 크로스 스레드 에러를 해결하게 위해서는 .. 2020. 11. 20.
[C#] #region / #endregion 접기/펼치기 개요(region) 모두접기 = CTRL + M + O 개요(region) 모두펼치기 = CTRL + M + P 개요(region) 커서부분만 펼치치 = CTTRL + M + M 비주얼 스튜디오 2010에는 #region/#endregion구역이 위의 단축키에 모두 접혔지만 비주얼 스튜디오 2017은 접히지 않고 그냥 코드 블록만 접힌다. 이럴땐 역시 스택오버플로우 https://stackoverflow.com/questions/42843090/visual-studio-2017-collapsing-regions 한국어버전 : 도구 -> 옵션 -> 텍스트편집기 -> C# -> 고급 -> 개요 -> 정의로 축소할 때 #regions 축소 를 체크하면 이제 #region/#endregion도 같이 접힌다 2020. 11. 6.
[C#] C#과 C API의 상호운영 dll사용등 출처 : http://blog.daum.net/toyship/83 C# Interop – C#과 C API의 상호운영 Posted by rainiac on 2012/10/19Leave a comment (2)Go to comments C#은 매우 강력한 각종 기능과 Class를 제공하지만, Windows Application의 작성을 위해서는 C로 작성된 Library를 사용하여야 하는 경우가 많이 발생된다. C#은 기본적으로 C의 Pointer를 지원하지 않고, Managed Code의 메모리 관리 체계는 근본적으로 C(Unmanaged Code)와 차이가 많기 때문에 C와의 호환을 위해서는 특수한 기법을 사용하여야 가능하다. C#은 이를 위하여 PInvoke와 Marshaling 등의 기능을 제공한다.. 2020. 11. 4.
[c#] [C++] --> [C#] 구조체, 클래스 컨버팅 c++ 서버, c# 클라 Unity 기준입니다. C++ #pragma once #pragma pack(push,1) // 1바이트 정렬 struct MyStruct { MyStruct() { m_AccountUniqueID = 0; m_CharacterUniqueID = 0; memset(m_sz, 0, sizeof(m_sz)); m_b = false; } char m_sz[128]; unsigned int m_un1; unsigned int m_un2; bool m_b; }; #pragma pack(pop) // 1바이트 정렬끝? 대충 이런 구조체가 있다 치면 C# 으로 컨버팅 할때 이것저것 많이 해야된다;;;;; C# using System; using System.Runtime.InteropServ.. 2020. 11. 4.