본문 바로가기
반응형

컴퓨터/C#90

[C#] Form 크기 고정 C#에서 Form 크기를 고정시키는 방법은 FormBorderStyle 속성에서 Fixed~로 시작하는 항목을 선택하면 된다. 2023. 6. 18.
[C#] 최근에 사용한 프로젝트 및 솔루션 개수 설정 최근에 사용한 프로젝트 및 솔루션 개수는 메뉴 도구-옵션에서 다음과 같이 설정할 수 있다. 설정할 수 있는 최대 개수는 24개이다. 2023. 6. 17.
C# 파일 압축 해제 방법 C#에서 파일 압축 해제 방법은 다음과 같다. using System; using System.IO.Compression; class Program { static void Main(string[] args) { string startPath = @".\start"; string zipPath = @".\result.zip"; string extractPath = @".\extract"; ZipFile.CreateFromDirectory(startPath, zipPath); ZipFile.ExtractToDirectory(zipPath, extractPath); } } 2023. 6. 17.
C# 새 프로젝트 만들기 C#에서 새 프로젝트를 만드는 방법은 다음과 같다. 1. 새 프로젝트 만들기를 클릭한다. 2. Windows Forms 앱(.NET Framework)을 선택한다. 3. 프로젝트 이름을 입력하고 '만들기' 버튼을 클릭한다. 2023. 6. 17.
[C#] 프로그램 초기 설정 해제 Properties.Settings를 이용하여 초기값을 설정할 수 있다. 초기값을 삭제하기 위해서는 아래 폴더에서 프로그램 폴더를 삭제한 후 실행하면 된다. C:\Users\[사용자 이름]\AppData\Local\[프로그램 이름] 위 폴더를 보기 위해서는 다음과 같이 숨긴 항목을 체크해야 한다. 2023. 6. 5.
[C#] String Format 사용법 String.Format("{0,10}{1,10}", "Decimal", "Hex"); {0,10}에서 0은 첫번째 인수인 "Decimal"을 의미한다. {0,10}에서 10은 자리수를 의미한다. 10은 오른쪽 정력이고 -10은 왼쪽 정렬이다. 위의 스트링 출력은 다음과 같다. " Decimal Hex" String.Format("{0,10}{0,10}", "Decimal"); 위의 스트링은 다음과 같다. " Decimal Decimal" String.Format("{0,10:G} ~ {1,10:X}", value1, value2); {0,10:G}에서 G는 일반 형식이고 {1,10:X}에서 X는 16진수 형식이다. 위 스트링은 다음과 같다. " 12 ~ FF" String Format은 C의 print.. 2023. 5. 22.
[C#] sscanf 대체 함수 C#에는 sscanf를 완전히 대체하는 함수는 없다. 대신 string의 Split 메소드로 비숫하게 구현할 수 있다. Spilt은 다음과 같이 사용한다. string s = "AB.CD.EF"; var parts = s.Split('.'); string s1 = parts[0]; string s2 = parts[1]; string s3 = parts[2]; ☞ var 사용법 2023. 4. 12.
[C#] 마우스 휠 입력 마우스 휠 이벤트는 속성 창에 없고 사용자가 직접 코딩해야 한다. pictureBox에서 이벤트 휠을 입력받는 방법은 다음과 같다. public Form1() { InitializeComponent(); pictureBox1.MouseWheel += new MouseEventHandler(pictureBox1_MouseWheel); } private void pictureBox1_MouseWheel(object sender, MouseEventArgs e) { int i = e.Delta * SystemInformation.MouseWheelScrollLines; PictureBox pb = (PictureBox)sender; } 위 코드의 e.Delta은 휠을 올릴 때는 +120이고 내릴 때는 -120.. 2023. 4. 12.
[C#] if 뒤에 탭을 치면 자동 완성되는 기능 해제 Visual Studio에서 기본적으로 if for 등의 명령어 뒤에서 탭을 치면 다음과 같이 자동 완성된다. 이 기능을 해제하는 방법을 찾는것이 생각보다 어렵다. 탐색기로 아래의 Snippets 폴더로 간다. C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC#\Snippets\1042\Visual C# 이 폴더에 아래와 같은 파일 있는데 이 파일들을 삭제하면 된다. 만약을 위해 압축한 후 파일을 삭제한다. 아래는 압축 후 파일 삭제한 폴더 2023. 4. 7.
[C#] serialPort 버퍼 크기 serialPort의 디폴트 읽기 버퍼 크기는 4096바이트이고 쓰기 버퍼 크기는 2048바이트이다. 속성창에서 ReadBufferSize와 WriteBufferSize 속성으로 변경하여 버퍼 크기를 변경할 수 있다. 버퍼 크기가 작으면 큰 데이터를 읽거나 쓸 때 데이터가 깨지는데 별도의 에러 메세지가 뜨지 않기 때문에 문제를 찾기 어렵다. 2023. 4. 5.
[C#] tabControl에서 Button의 PerformClick 문제 PerformClick은 Button을 누르는 메세지를 발생시킨다. 하지만, tabControl에서는 활성화된 tab의 Button만 PerformClick이 실행된다. 비활성화된 tab에 있는 Button에서는 PerformClick이 실행되지 않는다. tab을 변경할 때 PerformClick을 실행하면 정상적으로 동작하지 않는다. 2023. 4. 5.
[C#] 다아알로그 창 띄우기 C#에서는 Form과 Dialog에서 동일한 Form을 사용한다. Form을 나타내는 코드는 다음과 같다. Form1 frm1 = new Form1(); frm1.Show(this); Dialog을 나타내는 코드는 다음과 같다. Form1 frm = new Form1(); frm1.ShowDialog(); Dialog에서 Ok나 Cancel 버턴 입력을 받는 방법 부모폼 Form1 frm = new Form1(); DialogResult result = frm.ShowDialog(); if(result == DialogResult.OK) { } Dialog 자식폼 Ok 버턴 처리는 다음과 같다. private void button1_Click(object sender, EventArgs e) { this.. 2023. 4. 1.
NuGet 뜻 NuGet은 C#의 공유 코드 관리자이다. NuGet은 Visual Studio 2012부터 사용할 수 있다. Visual Studio C#의 프로젝트 메뉴에서 'NuGet 패키지 관리'를 선택한다. ☞ NAudio 설치 방법 2023. 3. 19.
[C#] 윈도우 항상 위에 표시 윈도우 폼을 항상 위에 표시하기 위해서는 다음과 같이 한다. this.TopMost = true; 항상 위 기능을 메뉴에 사용하는 방법은 다음과 같다. private void alwaysTopToolStripMenuItem_Click(object sender, EventArgs e) { if(alwaysTopToolStripMenuItem.Checked==false) { alwaysTopToolStripMenuItem.Checked = true; this.TopMost = true; } else { alwaysTopToolStripMenuItem.Checked = false; this.TopMost = false; } } 2023. 3. 15.
C# ref 키워드 C#은 포인터가 없기 때문에 Call by reference를 위해 함수 인자로 포인터를 사용할 수 없다. Call by reference를 위해서는 포인터대신 다음과 같이 ref 키워드를 사용해야 한다. void Method(ref int A) { A++; } int i=1; Method(ref i); Console.WriteLine(i); 이와 같이 실행하면 i에 2가 저장된다. ☞ Call by value와 Call by reference 차이 2023. 1. 29.
C# 자동 중괄호 해제 도구 메뉴에서 옵션을 선택하고 아래와 같이 '자동 중괄호 완성'을 체크해제한다. 2023. 1. 27.
C# 자동 서식 해제 C#에서 붙여넣기를 하면 자동 서식이 적용된다. 붙여넣기 자동서식을 해제하려면 도구 메뉴의 옵션에서 아래와 같이 체크해제한다. 그외 다른 자동서식을 해제하려면 아래와 같이 체크 해제한다. 2023. 1. 27.
'빌드 오류가 발생했습니다' 창 다시 띄우기 아래 창이 뜰때 '이 대화 상자를 다시 표시 안함'을 체크하면 다시 이 창이 뜨지 않는다. 이 창을 다시 띄우기 위해서는 도구 메뉴에서 옵션을 선택하고 아래와 같이 '시작 여부 묻기'를 선택한다. 2023. 1. 27.
C# 버턴 배경색 기본값으로 변경 버턴 배경색을 기본값으로 돌리는 방법은 다음과 같다. button1.UseVisualStyleBackColor = true; 버턴 배경색을 변경하면 UseVisualStyleBackColor값이 자동으로 false로 변경된다. 버턴의 FlatStyle이 Popup이나 Sytem 스타일이면 이것이 적용되지 않는다. 2023. 1. 26.
[C#] ContextMenu 호출 컨트롤 구하기 ContextMenu이 실행될 때 ContextMenu를 호출하는 컨트롤를 구하는 방법은 다음과 같다. private void MenuViewDetails_Click(object sender, EventArgs e) { MenuItem menuItem = sender as MenuItem; if (menuItem != null) { ContextMenu menu = menuItem.GetContextMenu(); Control ctrl = menu.SourceControl; } } ContextMenuStrip일 때는 다음과 같이 구한다. private void MenuViewDetails_Click(object sender, EventArgs e) { ToolStripItem menuItem = sen.. 2023. 1. 26.
[C#] 2차원 다차원 배열 C#에서 2차원 배열은 다음과 같이 사용한다. int[,] a = new int[4, 2]; a[0,0] = 1; C#에서 3차원 배열은 다음과 같이 사용한다. int[,,] a = new int[4, 2, 3]; a[0,0,0] = 1; 2023. 1. 26.
comboBox 아이템 복사하기 아래 코드는 comboBox1의 모든 아이템을 comboBox2로 복사한다. comboBox2.Items.AddRange(comboBox1.Items.Cast().ToArray()); 2023. 1. 10.
tabControl 사용법 tabControl은 사용해야 하는 컨트롤 개수가 많을 때 탭으로 나누어 사용할 수 있다. tabControl의 탭이 변경될 때 실행되는 이벤트는 다음과 같다. private void tabControl1_SelectedIndexChanged(object sender, EventArgs e) { MessageBox.Show("Text=" + tabControl1.SelectedTab.Text); MessageBox.Show("Index=" + tabControl1.SelectedIndex.ToString()); } 2023. 1. 5.
Visual Studio C# 설정 C# 편집기 폰트는 도구 메뉴에서 옵션을 선택하여 아래와 같이 설정한다. 글자 색을 변경하려면 다음 창에서 설정한다. 탭을 유지하기 위해서는 다음과 같이 '탭 유지'를 선택한다. 2023. 1. 4.
[C#] FFT 프로그램 코드 C#은 복소수 연산을 지원한다. (using System.Numerics) C#에서 FFT를 구하는 소스코드는 다음과 같다. int BitRev(int n, int bits) { int rN = n; int cnt = bits - 1; n >>= 1; while (n > 0) { rN = (rN >= 1; } return ((rN 2022. 11. 2.
C# 컨트롤 배열 사용하기 C# 컨트롤 배열을 사용하는 방법은 다음과 같다. TextBox[] tb = new TextBox[7] { textBox1, textBox2, textBox3, textBox4, textBox5}; for (i = 0; i < 5; i++) { tb[i].Text = i.ToString(); } 2022. 10. 11.
C# Ping 테스트 C# Ping 테스트는 다음과 같다. Ping pingSender = new Ping (); PingOptions options = new PingOptions (); // Use the default Ttl value which is 128, // but change the fragmentation behavior. options.DontFragment = true; // Create a buffer of 32 bytes of data to be transmitted. string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; byte[] buffer = Encoding.ASCII.GetBytes (data); int timeout = 120; PingReply reply.. 2022. 10. 11.
C# 자식 폼에서 부모 폼으로 데이터 전달 방법 자식 폼에서 부모 폼으로 데이터를 전달하는 방법은 다음과 같다. 부모 폼에는 다음과 같다. ChildForm child = new ChildForm(); child.OnChildTextChanged += new EventHandler(OnChildTextChanged_child); child.ShowDialog(); void OnChildTextChanged_child(object sender, EventArgs e) { textBox1.Text = (string)sender; } 자식 폼에는 다음과 같다. public event EventHandler OnChildTextChanged; OnChildTextChanged("abcde", null); 자식 폼에서 OnChildTextChanged 함수를 .. 2022. 10. 11.
C# TCP Client (소켓 사용) 소켓을 이용한 TCP Client 프로그램은 다음과 같다. // 소켓 생성 Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); // 서버 연결 var p = new IPEndPoint(IPAddress.Parse("192.168.0.1"), 500); sock.Connect(p); // 데이타 전송 byte[] buf = new byte[1024]; sock.Send(buff, SocketFlags.None); // 데이타 수신 int n = sock.Receive(buf); // 소켓 닫기 sock.Close(); ☞ TCP Server (TcpClient 사용) ☞ TCP Client (Tc.. 2022. 10. 4.
C# TCP Server (소켓 사용) 소켓을 이용한 TCP Server 프로그램은 다음과 같다. // 소켓 생성 Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); // 바인드 IPEndPoint p = new IPEndPoint(IPAddress.Any, 500); sock.Bind(p); // Listening sock.Listen(10); // Client 연결 후 새 소켓 만듬 Socket clientSock = sock.Accept(); // 데이터 수신 byte[] buf = new byte[1024]; int n = clientSock.Receive(buf); // 데이터 송신 clientSock.Send(buf, 0,.. 2022. 10. 4.
반응형