[c# wpf] 탭(Tab Control) 사용법 탭 컨트롤을 통해 위와 같이 탭을 클릭할때마다 페이지가 바뀌는 효과를 만들 수 있습니다. 페이지랑은 다르게 별도의 분리된 페이지를 구성하는 것도 아니고, code-behind단도 따로 필요없이, 오직 xaml 상에서 구현이 가능하다는 특징이 있습니다. 1) 기본 layout //MainWindow.xaml 위 코드가 오늘 작성할 코드의 전부입니다. 하나씩 뜯어보자면, 탭은 특이하게 TabControl이라는 메인 엘리먼트를 기준으로 그 안에 자식 엘리먼트인 TabItem을 둡니다. 위 그림에서 탭1, 탭2 는 TabItem에 Header부분을 통해 수정이 가능합니다. 다음으로 아래 빨간색 사각형에 해당하는 부분은 TabItem 엘리먼트 안에 적어주는 내용이 출력이 됩니다. 우리 코드에서는 Label 엘리먼.. c#/wpf 2022. 5. 24. [c# wpf] page(페이지)란? (윈도우랑 뭐가 다를까?) 페이지(page)란 창을 새롭게 띄우는게 아니라 기존 윈도우안에서 내용물만 바꾸는거라고 볼 수 있습니다. 아래처럼 버튼을 누르면 페이지가 바뀌는 효과를 보실 수 있죠? 이런게 페이지가 변경 되는 모습입니다. 지금부터 차근 차근 페이지를 만드는 방법에 대해서 알아볼게요! 1. 페이지 생성 우리 포스팅에서는 페이지를 2개 만들어보겠습니다. 같은 방식으로 Page2.xaml도 만들어 아래와 같이 두개의 파일을 생성합니다. 2. 페이지 내용 수정 1) Page 파일의 code-behind단은 기본 디폴트 상태로 둡니다. 2) 각각의 페이지에 xaml 단을 수정해줍니다. //Page1.xaml //Page2.xaml 3. 메인 window 수정 //MainWindow.xaml 1) 기본 레이아웃 각 페이지에 접속.. c#/wpf 2022. 5. 24. [c# wpf] 버튼 클릭 => 텍스트 출력 2가지 방법 이번 시간에는 아래와 같이 클릭 버튼을 눌렀을때 특정 텍스트가 아래에 출력되는 방법에 대해 알아보도록 하겠습니다. 1) 기본 레이아웃 코드 TextBlock에 두꺼운 줄을 넣기위해 Border로 감싼 형태로 레이아웃을 구성해보았습니다. 2) 클릭 이벤트 추가 (1) 첫번째 방법 //MainWindow.xaml //MainWindow.xaml.cs(코드비하인드) Click 프러퍼티에 Button_Click이라는 이름의 함수를 만듭니다. 자동 완성 기능을 이용해 Tab을 누르면 코드비하인드 단에 자동적으로 함수가 생성되는데요. 대신 body 내용물은 수정해줘야겠지요. 저는 바디부분에 this.textbox.Text ="넣고싶은 내용" 형태로 코드를 수정해주었습니다. 여기서 this.textbox는 x:Nam.. c#/wpf 2022. 5. 23. [c# wpf] 버튼 content에 중괄호(curly braces) 넣기 이번 포스팅에서는 아래와 같이 중괄호를 윈도우창에 띄워보는 방법에 대해 알아보도록 하겠습니다. 1) 버튼 태그 안에 직접 넣기 제일 간단한 방법으로 태그를 감싼 형태로 작성해주시면 됩니다. 2) Content에 넣는 방법 위와 같은 방법이 아닌 Content="값" 형태로 넣으면 아래와 같은 오류가 발생합니다. 이런 경우에는 아래와 같이 {} 를 추가해주시면 정상적으로 출력이 됩니다. c#/wpf 2022. 5. 23. [c#] 다형성(polymorphism) 이란? | 왜 사용하는가? + 오버라이딩 이번 포스팅에서는 다형성에 대해 알아보도록 하겠습니다. (포스팅을 읽기전 반드시 상속에 관한 해당 포스팅을 읽고 와주시기 바랍니다.) 1. 다형성이란? 우리에게는 두개의 클래스가 있습니다. Monkey 클래스는 Animal 클래스를 상속받은 형태이고 , 두 클래스의 메소드는 같은 이름과 같은 시그니쳐로 구성 되어 있습니다. 자, 여기서 자식 클래스 객체를 생성해볼까요? 그런데! 아래와 같은 방법으로도 생성이 가능합니다. 두번째에서 어리둥절한 분들이 많을 것같은데요. "아니 어떻게 Monkey()로 객체 생성을 했는데 Animal 타입의 변수에 할당할 수가 있지?" 이것을 가능하게 해주는것이 이번 포스팅의 주제인 다형성에 관한것입니다. 다형성(Polymorphism)이란 상속을 받은 자식 클래스(여기선 M.. c# 2022. 5. 20. [c#] 클래스 상속 | 오버라이딩 3가지 방법 | sealed 이번 포스팅에서는 오버라이딩(overriding)에 대한 개념과 오버라이딩을 하는 3가지 방법에 대해서 알아보겠습니다. 1. 오버라딩 기법 3가지 (1) 오버라이딩 기본 형태 Animal이라는 클래스와 Animal을 상속받은 Monkey라는 클래스가 있습니다. 그런데 이 두 클래스의 메소드가 완전히 같은 형태이네요. 결과를 실행하면 어떤 출력이 나올까요? 정답은 아래와 같습니다. Output: 즉 부모 클래스의 메소드를 자식(파생) 클래스의 메소드가 덮어 쓴 상황이 일어났습니다. 이러한 현상을 우리는 오버라이딩이라고 합니다. (오버로딩과 이름이 비슷하여 헷갈리시는 분들이 있을텐데요, 오버로딩은 해당 포스팅 내용을 참고바랍니다.) (2) new 키워드 사용 그런데 아래 잘 보시면 정상적으로 실행되었음에도 .. c# 2022. 5. 20. [c#] null값 다루기(nullable type, ?, ??) c#에서 값형식(value types) 타입은 null값을 넣을 수 없고, 참조형식(reference types)타입은 null 값을 넣을 수 있다는것을 아시나요? (값형식, 참조형식을 모르시는 분은 해당 포스팅 참조) 1. 값형식과 참조형식에 null값 할당 정말 그런지 한번 확인해보겠습니다. 아래 예시는 참조형식 타입중 하나인 string입니다. 참조 형식이기 때문에 이상없이 null값이 할당이 됩니다. 반면 값형식 타입중 하나인 int의 경우 null 값을 할당하면 아래와 같은 에러가 발생합니다. 2. 값형식에 null값 가능하게 하기 그렇다면 값형식인 데이터타입에게 null을 넣을 수 있도록 하는 방법은 없을까요? nullable 타입으로 변경해주면 됩니다. nullable이란 한국어로 번역하자면.. c# 2022. 5. 19. [c#] 생성자 오버로딩 개념 정리( + 다른 생성자 호출) 오버로딩이란 함수명은 같지만 시그니쳐(매개변수 구성)를 달리해서 여러개의 함수를 사용할 수 있는 기법을 말합니다. 만약 이런 기능이 없다면, 매번 다른 명의 함수명을 생각해내야 하는 귀찮음이 발생하겠죠? 이 오버로딩은 생성자에서 자주 사용되는데요. 예시를 통해 한번 확인해보겠습니다. 1. 기본 생성자 오버로딩 위 예시를 보면 앞선 정의에서 말씀 드린것처럼 같은명의 함수(여기선 생성자)이지만, 하나는 인자를 받고 다른 하나는 인자를 받지 않는 형태로 시그니쳐를 달리했습니다. 그리고 객체 생성 후 필드에 접근해보겠습니다. 이번 예시는 인자로 아무것도 넣지 않은 형태입니다. output: 결과를 보시면 첫번째 생성자가 실행된걸 알 수있습니다. 이번에는 string 인자값을 한번 넣어 실행해보겠습니다. 결과를 .. c# 2022. 5. 19. [c#] visual studio 괄호 색깔이 검정으로 바뀌는 에러? 혹시 비쥬얼 스튜디오에서 다크 테마를 이용하는데 갑자기 아래와 같이 괄호등의 특수문자들이 검정색으로 바뀌어 안보이는 문제를 겪고 계신가요? 해결방법 1) 도구 -> 옵션 에 들어갑니다. 2) 환경 -> 일반 -> 색테마 아마 기본 세팅이 어둡게 되어있을텐데, 다른 색테마를 선택 후 , 다시 어둡게 테마를 클릭해주시면 정상적으로 돌아올것입니다. c# 2022. 5. 19. [c#] 박싱(boxing), 언박싱(unboxing) 개념과 사용 이유 기존에 타입을 변환하는것을 형변환(type casting)이라고 했었습니다. (형변환은 관련 포스팅 참조 바랍니다.) 박싱과, 언박싱도 형변환을 하는것이지만 조금 결이 다른데요. 1. 박싱과 언박싱이란? 박싱(boxing)은 값 형식(value types)을 참조 형식(reference types)으로 변환 해주는것을 의미하고, 언박싱(unboxing)은 박싱했던 값을 다시 원상태로 복귀 시키는 것을 의미합니다. (값형식, 참조형식에 대해 모르시는 분은 해당 포스팅을 읽고 오시길 추천드립니다.) 어떻게 이게 가능한것일까요? 바로 모두의 부모 객체인 object타입 덕분입니다. 그렇기 때문에 모든 타입이 object로 변환이 가능한것이죠. 정리하자면 object타입이 참조 형식(reference types.. c# 2022. 5. 18. [c#] 형변환(type casting) | 명시적 변환 vs 암시적 변환 이번 포스팅에서는 명시적 변환과 암시적 변환이 무엇인지, 그리고 형변환시 주의할점에 대해 알아보도록 하겠습니다. 1. 명시적 변환과 암시적 변환이란? (1) 명시적 변환 명시적 변환은 이름에서도 느낄 수 있듯이 형변환을 하는걸 "명확"하게 표현 해주는 것을 의미합니다. 위와 같이 int 타입을 long타입으로 변경하고 싶다면 (long)을 앞에 써줌으로써 "나 지금 타입 변환한다"라는걸 적어주는 것입니다. (2) 암시적 변환 암시적 변환이란 명시적 변환과는 반대로 "티나지 않게" 형 변환을 해주는 것을 의미합니다. 마찬가지로 int 타입을 long 타입으로 예시 들어보겠습니다. 앞서 명시적 변환과는 다르게 (long)이라고 명확하게 명시 하지 않았음에도 불구하고 타입이 변경 됩니다. 더 짧은 코드로 깔끔.. c# 2022. 5. 18. 글쓰기 잘 하는 법 좋은 글이란 독자가 읽기 좋은 글이어야 한다. 그렇기 때문에 퇴고를 하면서 독자의 눈에서 글을 보는 작업이 반드시 필요하다. 하지만 그건 쉽지 않은 일이다. 왜냐하면 내가 쓴 글의 내용을 완벽하게 꿰뚫고 있는 나와 이 글을 처음 보는 독자의 지식 격차는 무시할 수 없기 때문이다. 어떻게 해야 이 간극을 줄일 수 있을까? 부던하게 내가 쓴 글에 대한 익숙함을 벗어나려 노력해야 한다. 마치 난생 처음 이글을 보는것 처럼 말이다. 그게 어떻게 가능할까? 내가 쓴글을 컴퓨터로 작성하였다면, 해당글을 핸드폰으로 다시 보거나, 작성한 장소와 다른 장소에서 보거나, 시간이 조금 흐른뒤에 보는 등 다양한 방식과 다양한 각도로 글을 보면 된다. 그러면서 내 글에 자의식 과잉이나 사각지대가 없는지 끊임 없이 확인해야 한다.. 기타/도서 추천 2022. 5. 18. 이전 1 ··· 19 20 21 22 23 24 25 ··· 32 다음