본문 바로가기
반응형

Winform53

.net socket chatting sample (4) SocketClient using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Net; using System.Net.Sockets; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using SocketClient.AsyncSocket; using SocketCommon; namespace SocketClient { public partial class Form1 : Form { pri.. 2021. 4. 15.
.net socket chatting sample (3) SocketServer using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using System.Net; using System.Net.Sockets; using SocketServer.AsyncSocket; using SocketCommon; using System.IO; using System.Runtime.Serialization.Formatters.B.. 2021. 4. 15.
.net socket chatting sample (2) SocketCommon Server Source SocketCommon Project using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; namespace SocketCommon { public class AllowAllAssemblyVersionsDeserializationBinder : System.Runtime.Serialization.SerializationBinder { public override Type BindToType(string assemblyName, string typeName) { Type typeToDe.. 2021. 4. 15.
.net socket chatting sample (1) .net socket chatting 예제. 예외처리하지 않음. 정해진 시나리오를 벗어나면.. 에러날 수 있음. 원래 다른 목적으로 필요 로직 샘플로 만든거라... 예외 사항 충분히 있고... 기능 구현에만 중심을 두었음. 파일 전송도 추가하려고 했으나... 귀찮아서.. 안함. 하지만, 쉽게 추가 할 수 있을 것이라 생각됨. 파일 읽어서. binary추가만 하면됨. socket 관련 참고용및 학습용으로 사용바람. 추가로... disconnect가 제대로 작동안함. 자체버그 같음. 처리하려고.. 애를 썻으나... 답을 찾지 못함. 일단 꼼수로 처리를 함. close할 때 2번 호출하는데... 도대체 왜 2번 호출하는지 알 수가 없음. 자료도 찾을 수 없었음. server logic, client logic.. 2021. 4. 15.
기본 combobox c#기본 combo box //아이템 추가 1 cboPriorty.DisplayMember = "Value"; cboPriorty.ValueMember = "Key"; cboPriorty.Items.Add(new { Value = "high", Key = "high" }); cboPriorty.Items.Add(new { Value = "normal", Key = "normal" }); string value = (cboPriorty.SelectedItem as dynamic).Value; //아이템 추가 2 cboTest.DisplayMember = "Value"; cboTest.ValueMember = "Key"; Dictionarydic = new Dictionary(); dic.Add("1", ".. 2020. 9. 4.
Devexpress Grid CustomSummaryCalculate(그리드 특정 조건만 sum) 그리드의 summary에 특정 조건의 값만 합할 때 다음 코드를 사용. //전역 double AAA = 0; int BBB = 0; //Calc advBandedGridViewDetail.CustomSummaryCalculate += (sender, e) => { AdvBandedGridView view = sender as AdvBandedGridView; switch (e.SummaryProcess) { case DevExpress.Data.CustomSummaryProcess.Start: if (((DevExpress.XtraGrid.GridColumnSummaryItem)e.Item).FieldName == "AAA") AAA = 0; if (((DevExpress.XtraGrid.GridColu.. 2019. 5. 21.
[DevExpress] 그리드의 체크박스 한개만 선택 할때 그리드에 있는 checkbox 한개만 선택되게 할 때 private void advBandedGridViewMtrl_CellValueChanging(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e) { if (e.Column.FieldName == "BASE_CUST_YN") { if (e.Value.ToString() == "Y") { for (int i = 0; i < this.advBandedGridViewMtrl.RowCount; i++) if (i != e.RowHandle) (this.advBandedGridViewMtrl.GetDataRow(i) as DataRow)["BASE_CUST_YN"] = "N"; .. 2019. 1. 23.
[DevExpress] TextEdit에 Invalid Value 아이콘 제거 하기. 마스크를 먹이고 나면 마스크의 값이 정규식과 다르면, 다음과 같은 메세지가 나옴.입력형식은 마스크를 따르나, 유효성 검증을 안하려면, 다음과 같이 하면됨.Properties.Validating 이벤트 실행시켜서, valid를 무시시켜야 됨.btxtACC_NO_Cust.Properties.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Custom; btxtACC_NO_Cust.Properties.Mask.AutoComplete = DevExpress.XtraEditors.Mask.AutoCompleteType.None; btxtACC_NO_Cust.Properties.Mask.EditMask = "[0-9][0-9][0-9][0-9][0-9][0-9][0.. 2019. 1. 22.
Devexpress Grid LostFocus Event 그리드 내의 컬럼마다 계산식 등등이 있을때, 해당 식 적용 방법. 경우의 수1.row 변경2.동일 row 내에서 focuscolumn 변경3.외부 컨트롤로 focus이동 //값 변경시 advBandedGridView.KeyDown += AdvBandedGridView_KeyDown; //row의 focus column이 변경되었을 시 advBandedGridView.FocusedColumnChanged += AdvBandedGridView_FocusedColumnChanged; //grid내에서 row변경시 advBandedGridView.BeforeLeaveRow += AdvBandedGridView_BeforeLeaveRow; //grid의 focus를 잃었을 때 advBandedGridView.Lo.. 2018. 12. 19.
DevExpress PictureEdit Drag&Drop DevExpress PictureEdit Drag&Drop 탐색기에서 파일을 드래그했을 경우 해당 파일을 로드 하고 싶어서 구현을 했는데... 작동이 되지 않았다. 일반 테스트 폼에서는 정상 작동... 근데 왜 안될까? 를 한참을 고민했지만... 이유는 권한이었다...visual studio는 관리자 권한 탐색기는 일반 권한으로 해서 안되었다. ㅡㅡ; visual studio를 일반권한으로 하니 먹었다. 결론 둘다 동일 권한이어야 한다. 관리자면 관리자, 일반이면 일반으로.. 씨댕. iis 때문에 관리자 권한으로 열었는데. ㅋㅋㅋ 별것도 아닌걸로 시간 버림... 참고로 해당 소스 using System; using System.Collections.Generic; using System.Component.. 2018. 3. 13.
크로스 스레드 크로스 스레드 작업 관련. 타이머에서 반복 되어 실행되면서, 폼에 있는 textbox에 로그를 기록함. 기존 로그에 추가 방식으로 기록이 됨. //델리게이트 선언 delegate void LogWrite(string msg); //실행 protected void LogInput(string msg) { string txtMessage = string.Format("{0}{1} : {2}", Environment.NewLine, DateTime.Now.ToString(), msg); if (txtLog.InvokeRequired) { LogWrite lw = new LogWrite(x=>{ txtLog.Text += x; }); txtLog.Invoke(lw, txtMessage); } else txtLo.. 2017. 3. 22.
화면 깜빡임 처리 Layout에 많은 컨트롤 에를 들면 Label 같은 컨트롤들이 많으면 데이터가 변경되었을 때 깜빡임이 발생한다. 이때 해결할 방법은 SuspendLayout(), ResumeLayout(false)으로 위 아래를 감싸는 방법이 있다. 작업 시작전에 SuspendLayout()종료후 ResumeLayout(false)을 실행시킨다. TableLayoutPanel1.SuspendLayout(); code.... TableLayoutPanel1.ResumeLayout(false); 2016. 8. 5.
Find control by name from Windows Forms controls Find control by name from Windows Forms controls 유사한 컨틀롤이 여러개 있을 때 해당 컨트롤들의 이름(text)로 찾아서 사용하기.TextBox txt = this.Controls.Find("txtName1", true).FirstOrDefault() as TextBox; txt.Text = ""; if (drs != null && drs.Count() > 0) for(int i=1; i< 5; i++) for(int j=0; j 2016. 8. 5.
Devexpress Grid 컬럼 병합 Devpress에서 cell merge할 때 다음과 같이 한다. gvGridView.OptionsView.AllowCellMerge = true; 위와 같이 쓰면 전체가 머지가 되버린다. ㅡㅡ; 그래서 필요로 하는 cell만 병합를 하고 싶다면. 다음과 같이 한다. //Merge 사용한다고 설정 gvGridView.OptionsView.AllowCellMerge = true; private void GvGridView_CellMerge(object sender, DevExpress.XtraGrid.Views.Grid.CellMergeEventArgs e) { if (e.Column.FieldName == "Name")//Name 컬럼만 Merge { var dr1 = gvGridView.GetDataRo.. 2016. 7. 26.
Grid에서 행 위치 변경(스와프) 그리드에 있는 행을 위로, 또는 아래로 내리는 스와프 코드는 다음과 같다. 약간에 오작동이 있어서 AcceptChanges()를 사용했더니 특별한 문제가 생기지 않았다. 아마도,행을 빼서 복사본을 만들고 기존 행을 삭제를 하고 다시 넣고를 반복해서 중복된 쓰레기 데이터들이 많아서 이지 않을까 판단한다. 의외로 꼼수가 많았는데 테이블에서 행을 빼서 InsertAt을 사용했더니 의외로 간편했다. 아래 코드는 context 메뉴에서 실행하였다. 버튼등 다른 곳에 적용하면 될 듯하다. //선택된 행 위로 올리기 private void TsmUpper_Click(object sender, EventArgs e) { var nowPosition = gvGrid.FocusedRowHandle; if (nowPosit.. 2016. 7. 7.
Devexpress Grid Drag & drop 데브익스프레스 그리드에서 드래그 드롭하는 코드. 그리드에서 드래그해서 그리드에 놓을 수 있고, 유저컨트롤 등 여러곳에 떨어뜨리를 수 있다. 받는 쪽 컨트롤에서 DragDrop, DragOver 이벤트만 구현하면 된다. 보내는 그리드에서도 마찬가지다. MouseDown, MouseMove 이벤트를 구현하고 아래 소스를 복사 붙여넣기 한 다음에 받는쪽의 DragDrop에서 어떻게 처리 할지를 구현하면된다. 아래 코드에는 단순히 라벨에 출력만 하였다. 파일을 드래그 드롭을 하고 싶다면, 파일 설정만 해주면된다. 그리고 파일을 드래그 드롭했을 때는 파일을 바이너리로 주는게 아니라 파일 풀 경로를 준다. 그러면 파일 클래스를 활용하면된다. 추가로 받는쪽에서는 AllowDrop 속성을 True로 설정해야된다. Dr.. 2016. 7. 1.
라벨 멀티라인(Label MultiLIne) Label 컨틀에 여러줄의 글을 넣을 때 다음과 같이 하면된다.하지만..DB에서 바인딩 할때는.... 답이 없네.. 문자열 바꿔치기 같은 기술을 사용해야된다. Label lblTest = new Label(); lblTest.Text = "ABCDEFG" + Environment.NewLine + "HIJKLMN"; 2016. 7. 1.
Devexpress Grid print Devexpress grid 프린트 하기 Devexpress Grid에서 프린트기능을 제공한다. preview도 제공하며, preview에서 제목 열편집, 출력용지 가로 세로 출력되 조정이 된다. 코드 상에서도 GridView.OptionsPrint 옵션을 사용하면, 여러가지 설정을 할 수 있다. 그리드 출력시에도 컬럼의 출력 여부또한 설정이 가능한다. //option gvList.OptionsPrint.EnableAppearanceEvenRow = true; //형 색상 넣기 gvList.OptionsPrint.PrintFooter = true; //풋터 사용유무 gvList.OptionsPrint.RtfPageFooter = "test"; //풋터 이름등 //그리드 프린트시 해당 설정으로 출력 여부를.. 2016. 5. 12.
Devexpress Grid에서 자주 사용하는 코드 Grid에서 자주 사용 하는 코드 str = grdView.GetFocusedDataRow().Field("ColumnName"); //그리드에서 선택된 행의 데이터 가져오기 str = grdView.GetFocusedDataRow()["ColumnName"].ToString(); DataRow row = gvView.GetDataRow(gvView.FocusedRowHandle); //그리드의 선택된 cell의 데이터 가져오기 string str = gvSample.GetFocusedRowCellValue("colName").ToString(); string str = gvSample.GetRowCellValue(rowHandle, columnName); //특정 셀 값을 변경 gvSample.SetR.. 2016. 5. 3.
Devexpress Grid 행에 색상 넣기 데이터 값에 따라 행별로 색상을 달리 할경우 RowStyle 이벤트를 사용한다. Devexpress 샘플 코드 private void gridView1_RowStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e) { GridView View = sender as GridView; if(e.RowHandle >= 0) { string category = View.GetRowCellDisplayText(e.RowHandle, View.Columns["Category"]); if(category == "Beverages") { e.Appearance.BackColor = Color.Salmon; e.Appearance.BackColor.. 2016. 5. 3.
DevExpress Repository Item DateEdit devexpress의 그리드에 DateEdit 컨트롤을 올릴 때 적용할 마스크 설정이다. 디자이너에서 해도 디고 코드로 해도 된다. 그리고 UseMaskAsDisplayFormat = true 을 사용하면, 뒤에 시간이 붙지 않고 정의된 mask 형식으로만 표현된다. rdeDt.Mask.EditMask = "([0-9][0-9][0-9][0-9])/(0?[1-9]|1[012])/([012]?[1-9]|[123]0|31)"; rdeDt.Mask.IgnoreMaskBlank = false; rdeDt.Mask.MaskType = DevExpress.XtraEditors.Mask.MaskType.RegEx; rdeDt.Mask.UseMaskAsDisplayFormat = true; 2016. 4. 21.
devexpress mask Mask 참조 URLhttps://documentation.devexpress.com/#WindowsForms/CustomDocument583 날짜 마스크 (2015/12/31) ([0-9][0-9][0-9][0-9])/(0?[1-9]|1[012])/([012]?[1-9]|[123]0|31)숫자 2자리 마스크 (무조건 2자리 99) ([0-9][0-9])숫자 2자리 마스크 (3, 99) \d?\d?연도 "\\d\\d\\d\\d"월 "(0[1-9]|1[012])"년월 "\\d{4}/(01|02|03|04|05|06|07|08|09|10|11|12)"연월일 "\\d\\d\\d\\d/\\d\\d/(01|02|03|04|05|06|07|08|09|10|11|12)"시분 "(0?\d|1\d|2[0-3])\:[0-.. 2016. 4. 14.
DevExpress에서 자주 사용하는 코드 Dev Express에서 자주 사용되는 메서드 및 기능 ComboBox cmbCombo.EditValue = dr["name"].ToString(); //콤보박스에서 textbox처럼 키입력 검색기능 blupReqDept_Search.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard; Radio Button RdoRadio.EditValue = dr[""].ToString(); Checkbox //체크박스 기본 값 설정 chkValue.Properties.DisplayValueChecked = "Y"; chkValue.Properties.DisplayValueGrayed = "N"; chkValue.Prop.. 2016. 4. 11.
UltraDockManager Docking Panel sample 파일 첨부 2016. 2. 26.
Infragistics Ultragrid Filter(필터) 그림과 같이 그리드 상단에 필터를 넣을 수 있다. 필터를 넣으면 TextBox, DropDownList등의 컨트롤이 들어가고 입력 또는 선택한 것만 보여준다. 코드는 다음과 같다. ugQnA.DisplayLayout.Bands[0].ColHeadersVisible = true; ugQnA.DisplayLayout.Bands[0].ColHeaderLines = 1; ugQnA.DisplayLayout.Bands[0].Override.AllowRowFiltering = DefaultableBoolean.True;//.False; ugQnA.DisplayLayout.Bands[0].Override.FilterUIType = FilterUIType.FilterRow; ugQnA.DisplayLayout.Band.. 2016. 2. 17.
Infragistics Ultragrid의 데이터중 특정 조건의 데이터만 조회할 때 그리드의 데이터 중 특정 조건의 데이터만 조회하고 그 데이터를 list에 한 건 한건 넣는다. List uID = new List(); //checked data select List ckRows = ug.Rows.GetFilteredInNonGroupByRows().Cast().Where(u => (bool)u.Cells["Check"].Value == true).ToList(); //add list to checked ckRows.Cast().ToList().ForEach(u => uID.Add((string)(u.Cells["uID"].Value))); 2016. 2. 2.
MultiLine textbox 자동으로 스크롤 시키기 아래 텍스트 박스에 행이 하나씩 추가 될 때마다 커서를 아래로 이동시켜 항상 맨 하위가 보이게 한다. Textbox로 하면 절대 안먹는다.RichTextBox로 해야된다. 무지 삽질했다. txtList.AppendText(string.Format("Update success : \r\n", "XXXX")); txtList.ScrollToCaret(); 2016. 1. 25.
Infragistics UltraComboEditor 멀티 선택(multi select) 그림과 같이 체크 박스를 넣고 멀티 선택을 하려면 다음 코드에서 옵션을 선택하면 된다. //체크박스를 보이게 설정 cmb.CheckedListSettings.CheckBoxStyle = Infragistics.Win.CheckStyle.CheckBox; //선택을 체크박스로 할지 아니면, item 항목을 로 할지 설정 cmb.CheckedListSettings.ItemCheckArea = Infragistics.Win.ItemCheckArea.Item; //ItemCheckArea.CheckBox; 위 속성을 Item으로 했을 경우 아치템을 선택해도 밑으로 펼쳐진 리스트는 닫히지 않는다. 사실 이놈을 찾으려 하루를 소비했다... //여러개 선택 했을 때 구분값 cmb.CheckedListSettings... 2016. 1. 19.
UltraButton 이미지 버튼 속성 Infragistics의 UltraButton을 이미지 버튼으로 보이고 싶을 때다음 속성값만 주면, 그림 처럼 변경이 된다. ultraButton1.ButtonStyle = Infragistics.Win.UIElementButtonStyle.Borderless; ultraButton1.ShowFocusRect = false; ultraButton1.ShowOutline = false; ultraButton1.UseFlatMode = Infragistics.Win.DefaultableBoolean.True; ultraButton1.UseHotTracking = Infragistics.Win.DefaultableBoolean.True; ultraButton1.UseOsThemes = Infragistics... 2016. 1. 18.
ultraExplorerBar Group, Item 동적 생성 ultraExplorerBar 컨트롤의 그룹과 아이템을 동적으로 생성하여 메뉴로 이용한다.아이템의 이미지 넣어줄 때는 리소스에 등록하고 넣어준다. 이렇게 동적으로 생성 //using Infragistics.Win.UltraWinExplorerBar for(int i=0; i< 5; i++) { UltraExplorerBarGroup uebgroup = new UltraExplorerBarGroup(); uebgroup.Text = "New Group" + i.ToString(); for(int j=0; j 2016. 1. 15.
반응형