본문 바로가기

C#/C# 코딩의 기술

(10)
[C# 이벤트 매개변수 전달] 무명메소드를 사용해서 전달하는 법 1 2 3 4 5 6 7 8 9 10 11 12 public class ClassA { public void InitControl() { btnClose.Click += btn_Click; } void btn_Click(object sender, EventArgs e) { //some code.. } } h - 위와 같은 이벤트를 사용중에 btn_click() 에서 매개변수를 전달받아서 처리해야되는 경우가 생길때 1 2 3 4 5 6 7 8 9 10 11 12 13 14 public class ClassA { public void InitControl() { string name = "Forge JH"; btnClose.Click += (sender, e) => { btn_Click(name); }; }..
[C# Guid값으로 객체 생성] Guid 사용해서 객체 생성하기 var crossCertType = Type.GetTypeFromCLSID(Guid.Parse("A099920B-630C-426B-91EC-737685CEEE17")); var crossCert = Activator.CreateInstance(crossCertType);
[C# 이벤트 생성] 호출되는 폼에서 상위폼 이벤트를 통해서 값 받기 - A폼에서 B폼을 호출할때 매개변수로 정보를 넘겨줄수 있지만 - B폼에서 A 폼으로 B정보를 넘겨주거나, A정보를 받으려고 할때 Delegate / Event 를 통해서 다룰수있다 Class A classb.buttonclick += classb_buttonclick; // 이벤트생성 해서 사용 Class B public delegate int ButtonClickHandler(string value1); public event ButtonClickHandler buttonclick; //사용시 주의점이 해당 이벤트가 null 인지 확인해봐야함 if (buttonclick != null) int returnInt = InsertItemEvent(value1);
devexpress 그리드 필터를 변경해도 체크내역을 남겨야할 경우 https://www.devexpress.com/Support/Center/Question/Details/T109932/gridcontrol-how-to-restore-selected-rows-after-the-grid-is-filtered
테이블명을 제한적으로 만들어서 관리가 필요할때. - sysobjects 를 참조해서 사용 - 30개 제한적으로 생성하고 꽉차면 가장오래된 테이블부터 삭제하고 생성 foreach (var tableName in new List() { "Slip", "SlipDetail" }) { query = string.Format(@"{0} SET @STRSQL = '' IF NOT EXISTS(SELECT NAME FROM sysobjects WHERE name LIKE '{1}_DigitChange_%' and [type] = 'U') BEGIN SET @newTableName = '{1}_DigitChange_01' END ELSE IF NOT EXISTS(SELECT NAME FROM sysobjects WHERE name = '{1}_DigitChange_..
c# Linq Query Left join using (ServiceContext svcContext = new ServiceContext(_serviceProxy)) { var query_join8 = from a in svcContext.AccountSet join c in svcContext.ContactSet on a.PrimaryContactId.Id equals c.ContactId into gr from c_joined in gr.DefaultIfEmpty() select new { contact_name = c_joined.FullName, account_name = a.Name }; foreach (var c in query_join8) { System.Console.WriteLine(c.contact_name + " " + c...
c# 인터페이스 IDisposable 클래스에서 예외시 특정 기능을 돌려야 된다면 IDisposable 인터페이스, using문을 사용하면된다. class Foo : IDisposable{...public void Dispose(){!기능 구현}}class FooA{using(var foo = new Foo()){}catch(Exception e){Consol.WrithLine(e);}}
c# if / switch - 대부분의 경우 if문이 더 소스가 짧아지며 모든 판정에 대해서 구분이 가능하다.- c#에서 switch 에는 열거형, bool, char, string 판정 가능- 그럼 if문만 쓰면되는가 ?if문의 구조를보면if()else if()else if()elseelse 와 if 가 한문장이 아니다 즉 위부터 순서대로 n번의 추론을 거친다면switch 문은 식에대해 1번의 추론만으로 구분이 가능하다.