본문 바로가기

C#, MONO28

배열과 리스트의 변환 C#의 유용함 중에 하나는 리스트일 것입니다. 여러 가지 유용한 데이터 형태를 마음대로 사용수 있기 때문이죠. 물론 python에 비하면... C#의 배열을 리스트로 변환하거나 그 반대로 변환하는 방법을 알아보겠습니다. 배열을 리스트로 변환하려면 아래와 같이 하면 됩니다. public List testList; public int[] testArray; testList = new List(testArray); 반대로 리스트를 배열로 변환하려면 다음과 같이 하면 됩니다.' public List testList; public int[] testArray; testArray = testList.ToArray(); 2021. 8. 9.
쓰레드 동작중에 Invoke로 문자 쓰기 Thread로 동작중에 화면에 내용을 표시하고 싶을 때가 있습니다. 그런데 Thread에서 폼으로 접근하는 것이 잘 되지 않습니다. 해결 방법으로 Invoke를 사용합니다. 이 글은 Invoke delegate를 이용해서 lcdlabel에 글자를 쓰는 방법입니다. Invoke((MethodInvoker)delegate { this.lcdLabel.Text} ); 아래와 같이 사용해도 됩니다. private void WriteText(Control ctrl,string s) { if(ctrl.InvokeRequired) { ctrl.Invoke(_TextWriter,ctrl,s); } else { ctrl.Text = s; } } 이 방법은 Text를 포함하는 모든 도구에 사용이 가능합니다. 2021. 8. 9.
다른 폼으로 메시지 전송(3) 폼 간에 메시지를 전송할 수 있는 방법인데, 전송 메시지에 담기는 내용을 사용자가 마음대로 결정할 수 있어 매우 유연한 방법입니다. 즉 데리게이터로 전송하고 자하는 메시지의 객체 형태를 변경하여 사용하면 됩니다. 전송하는 폼의 코드입니다. public delegate void delEvent(string str); public event delEvent eventSender; //- 버튼이 눌리면 메시지를 전송한다. private void btnX_Click(object sender,EventArgs e) { if(this.eventSender != null){ string msg = string.Format("${0:00},{1}",this.inportNumber,"EQ_SELECT"); this.ev.. 2021. 8. 9.
다른 폼으로 메시지 전송(2) 다른 폼으로 문장으로 메시지를 전송하는 방법입니다. 그런데 이 방법은 다소 볼 안전합니다. 전송할 폼의 코드 내용은 다음과 같습니다. //- userControl class public partial class UserControl1 : UserControl{ //- property로 변경 내용 (event)이 있음을 알림 public event PropertyChangedEventHandler PropertyChanged; //- 변경될 내용이 기록되는 멤버 private string str_msg; public UserControl1(){ InitializeComponent(); } //- 변경 내용이 전달되는 함수 정의 public string Message{ get { return str_msg;.. 2021. 8. 9.
다른 폼으로 메시지 전송(1) 현재 사용 중인 폼에서 다른 폼으로 메시지를 전송해서, 다른 폼이 알아서 일을 처리하도록 유도할 수 있습니다. 이번 예에서는 동작 중인 폼에서 메인 폼으로 이벤트를 전송하고, 메인 폼이 이를 반영하는 내용을 작성해 보겠습니다. 먼저 하나의 폼(userControlX)을 작성하고 다음의 코드를 입력합니다. //- 이벤트 헨들러 정의 public event EventHandler btn_event; //- 초기화를 위해 객체 상성자에 이벤트 설정 public userControlX(){ btn.Click += btn_envet; } //- 동작 함수내에 이벤트 발생시 내용을 전달 public fuc(object sender, EventArgs e){ if(event != null){ btn_event(sen.. 2021. 8. 9.
richTextBox에 Console출력하기 C# GUI를 사용하다 보면, 가끔 Console의 내용을 화면에 보여주고 싶습니다. 이때 richTextBox를 이용해서 GUI 화면에 출력이 가능합니다. 다음 내용을 참조했습니다. https://stackoverflow.com/questions/472282/show-console-in-windows-application/15079092#15079092 https://stackoverflow.com/questions/4362111/how-do-i-show-a-console-output-window-in-a-forms-application 먼저 클래스를 추가합니다. public delegate void StringArgReturningVoidDelegate(string text); public class.. 2021. 8. 9.
버튼 배열을 만들고, 마우스 클릭 이벤트 설정하기 C#에서 여러 개의 버튼을 만들고, 마우스로 클릭하는 이벤트 기능을 사용할 때가 많습니다. 예를 들어 4x3개로 배열되는 키 버튼을 만든다면, 이를 버튼 배열로 만드는 것이 편리할 것입니다. 다음과 같은 방법을 사용하면 편리합니다. 이 예는 4개의 버튼을 생성하는 방법을 보여주고 있습니다. 우선 배열로 버튼을 정의합니다. private Button[] btn = new Button[4]; 다음과 같이 버튼의 객체를 생성하고 폼에 등록합니다. 그리고 위치를 결정하고, 마우스 이벤트를 연결합니다. 이때 index라는 별도의 변수를 사용하는 것이 핵심입니다. private void Form1_Load(object sender,EventArgs e) { for(int i =0;i< btn.Length;i++){.. 2021. 8. 9.
Linux에서 MONO설치-시작 리눅스에서 C# 사용 MONO는 Visual Studio 또는 MonoDevekop에서 생성된 C# 기반의 실행 파일(*. exe)을 Linux에서 동작하도록 지원합니다. 잘 아시다시피 C#의 막강한 GUI 개발 내용을 Linux에서 활용할 수 있어 매우 편리한 방법입니다. 이를 사용하기 위해서는 Linux에 MONO 관련된 내용을 설치해야 합니다. sudo apt-get install mono-runtime mono-mcs mono-devel mono-complete -y sudo apt-get install git autoconf libtool automake build-essential mono-devel gettext 테스트용 코드 만들기 원도우즈에서 VisualStuio(VS)로 C# 프로젝드를.. 2021. 8. 9.