분류 전체보기 130

[C#] 파일 내용 불러오기(이메일로 보낼 내용)

프로그램이 일정 시간마다 상태를 체크해서 문제가 있을 시 메일을 보내는 코드를 작성을 작성 중..메일 내용을 바꾸고 싶은데 프로그램을 계속 수정을 할 수 없으니 파일내용을 불러 오도록 수정하려고 한다.장문이 될까 싶어 테스트..사용자 입장에서 프로그램을 제작하기란 쉽지 않네... namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string path = @"c:\Temp\readme.txt"; System.IO.StreamReader psReader = new System.IO.StreamReader(path, System.Text.Encoding.GetEncoding(949)); string email = ..

ETC/C# 2016.09.22

[C#] Chart Y축 타이틀..

C#에서 Line Chart를 사용하고 있는데Series를 2개 쓰면서 Y축을 주,보조를 사용하게 되었다.그런데 어느라인이 어떤 축을 사용하는지 명확하지가 않아표시를 하려는데, 이거 검색으로 도저히 안나오더라. 그래서.. 클래스를 하나씩 하나씩 뒤지면서 테스트해보다가 찾아냈다. 힘들었다... ㅠㅠ chart1.ChartAreas[0].AxixY.Title = "온도"; chart1.ChartAreas[0].AxixY2.Title = "습도"; 찾아냈지만 뭔가 허무하군.. 적용된 것만 결과물로...

ETC/C# 2016.09.19

[C#] DataGridView 간 DataRow 이동.(DataTable add 시 이 행은 이미 다른 테이블에 속해 있습니다.)

오늘은 삽질을 꽤나 오래 했다. DataGridView 간 DataRow를 이동시키려고 했는데 자꾸 예외가 떳다. 상황은 DataGridView에 DataTable을 바인딩 시키고 클릭한 Row를 삭제하고 옆에 있는 DataGrid에 옮기는 것이다. 이 상태에서 홍길동을 클릭하면 오른쪽 으로 옮겨가는 것을 할 것이다. 이런식이다. public partial class Form1 : Form { DataTable dt = new DataTable(); DataTable dt2 = new DataTable(); public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { DataRow row = n..

ETC/C# 2016.09.03

[C#] 폼(Form) 최소, 최대, 닫기 버튼 없애기

Server/Client 프로그램을 만들던 중Client가 로그인이나 다른 연결 시도 시 지연이 될 때가 있어서 지연되는 동안 ProgressBar를 띄우려고 했었다.그런데.. 이것이 닫기버튼이 있어서 예상치 못하게 종료가 되면 ProgressBar가 있는 Form을 닫는 문장에서 에러가 발생했다.그래서 닫기 버튼을 없애기로 하였다.. 우선 기본적으로 셋팅을 하면 위의 사진처럼 최소, 최대, 닫기 버튼이 나온다. 이제 폼의 속성 창으로 이동해서 창 스타일에 가보면ControlBox 가 True로 되어 있는 것을 확인할 수 있다.이것이 최소,최대,닫기 버튼에 관한 속성이다. False로 바꾸어 주자. False로 바꾼 후 폼을 확인해 보면 이처럼 변한 것을 확인할 수 있다. 닫기 버튼이 없으므로 프로그램상..

ETC/C# 2016.09.03

[C#]TextBox에 숫자만 입력받기

int 형 정수만 입력을 받아야 하는 일이 생겼다. 만약에 입력을 다 받은 후 검사를 하려면 소스코드가 엄청 길어질 것만 같아서 방법을 찾아 보았다. 역시나 방법은 있더라. 출처 : http://valkyurey.tistory.com/28 소스코드를 보면 private void txtInterval_KeyPress(object sender, KeyPressEventArgs e) { //숫자만 입력되도록 필터링 if(!(char.IsDigit(e.KeyChar) || e.KeyChar == Convert.ToChar(Keys.Back))) //숫자와 백스페이스를 제외한 나머지를 바로 처리 { e.Handled = true; } } 예전 코드를 넣던 방식이 안되어서.. private void txtInter..

ETC/C# 2016.08.30

[C#]Threading.Timer 생성자.. CallBack

Timer에 각각 다른 인자를 전달하여 생성을 하려고 하였다.그런데 CallBack만 사용해서는 인자 1개밖에 전달이 되지 않았다.방법을 찾던 중 MSDN에 생성자 관련 예제가 있어 확인해보니 Class를 생성하여 여러개의 인자를 전달하지 않고도 각각 다른 값을 가지고 Timer를 생성할 수 있었다. 출처 : https://msdn.microsoft.com/ko-kr/library/2x96zfy7(v=vs.110).aspx 기존 사용하던 소스 코드. System.Threading.Timer TimerTest; public MainForm(){InitializeComponent();TimerTest = new System.Threading.Timer(testProc, "test", 1000, 10000);..

ETC/C# 2016.08.29

[C#]DataSet 압축(DataSet to Byte, DataSet Compression)

DataTable을 Socket으로 전송해야하는 상황이 발생..DataTable을 Byte로 변환 해야 하는데 그 방법을 찾이 못하였고..(아시는분은 댓글좀...)DataSet을 Byte로 압축, 변환 시키는 방법을 찾았다.테스트 및 적용 완료 하였고 잘 돌아간다.진행 중 문제가 있었는데, 받는 측에서 Buffer를 너무 크게 해서 받으면 DataSet으로 변환이 되지 않는다.정확한 사이즈를 받아와야 한다. 출처 : http://ndolson.com/479#recentTrackback 매우 효율적인 방법인 듯.. 설명은 출처에 잘 되어 있으므로 생략하겠다.

ETC/C# 2016.08.29

[C#]Socket - 버퍼 사이즈보다 많은 양의 데이터 전송.

DataSet을 Byte로 변환하여 보낼일이 생겼다.그런데.. DataSet의 크기가 크다. 문제가 또 생긴 것이 Byte로 받은 측에서 DataSet으로 변경할 때 생긴다.버퍼 크기대로 받으면. DataSet으로 변경이 안되기 때문이다.그래서 DataSet의 크기를 먼저 보낸 후 그 사이즈와 버퍼 사이즈를 비교하여 반복적으로 받는 방법이다. 출처 : http://it-jerryfamily.tistory.com/entry/ProgramSocket-%ED%86%B5%EC%8B%A0-%EB%B2%84%ED%8D%BC-%EC%82%AC%EC%9D%B4%EC%A6%88%EB%B3%B4%EB%8B%A4-%EB%A7%8E%EC%9D%80-%EC%96%91%EC%9D%98-%EB%8D%B0%EC%9D%B4%ED%83..

ETC/C# 2016.08.29

[C#]Timer 인자 전달.

수십개의 Sensor와 데이터를 주고 받아야 하는데 Server 입장이 아니라 Clinet로 Telnet 접속을 시켜줘야 하는 상황.각자 다른 Interval로 접속해서 Data를 받아와야 해서 처음에는 Thread를 사용해서 Sleep을 쓸 생각이었으나...이렇게 되면 일정 간격으로 log를 남길 수가 없다는 판단... 세션이 늘어날수록 지연될수도 있다는 의견.. 그래서 Timer를 써야 하는데 인자 전달하는 방법을 찾아야 했다........ 우선.. Timer가 3가지가 있다는... ? 1.System.Windows.Forms.Timer2.System.Threading.Timer3.System.Timers.Timer 출처 : http://blog.daum.net/starkcb/117 출처에 가보면 상..

ETC/C# 2016.08.19