반응형

https://studyingpingu.tistory.com/77

 

[C#] 그리드 영역 나누는 RowDefinition과 GridSplitter 동적 생성하는 법

grid를 분할할수있는 RowDefinition과 분할 영역을 자유롭게 바꿀수있는 gridsplitter를 c# 코드적으로 생성하는 법을 기록해봄 이 방법을 응용하면 columndefinition에도 적용이 가능하다 gridsplitter란 진짜..

studyingpingu.tistory.com

 

 

 

 

저번글에 이어 조금더 완성도가 높아진 gridsplitter 글

 

 

그리드의 row, column의 영역을 마우스 드래그로 조절할수있는 gridsplitter 추가 예제

 

divideCnt만 정해주면 그만큼 gridsplitter 추가해주는 코드

 

public void divideRowAuto()
{	
	if (divideCnt == 0) return;

	double dividedHeight = mainGrid.Height / divideCnt;

	mainGrid.RowDefinitions.Clear();
	mainGrid.Children.Clear();

	//첫번째 로우
	RowDefinition row = new RowDefinition()
	{
		Height = new GridLength(dividedHeight, GridUnitType.Star),
		MinHeight = 30
	};
	mainGrid.RowDefinitions.Add(row);

	for (int i = 1; i <= (divideCnt - 1) * 2; i += 2)
	{
		RowDefinition row1 = new RowDefinition()
		{
			Height = new GridLength(15),
			MaxHeight = 15,
			MinHeight = 15
		};

		GridSplitter splitter1 = new GridSplitter()
		{
			VerticalAlignment = VerticalAlignment.Center,
			HorizontalAlignment = HorizontalAlignment.Stretch,
			ResizeBehavior = GridResizeBehavior.PreviousAndNext,
			Background = new SolidColorBrush(Colors.Red),
			Height = 2
		};
		mainGrid.RowDefinitions.Add(row1);
		mainGrid.Children.Add(splitter1);
		
		Grid.SetRow(splitter1, i);
		Grid.SetColumn(splitter1, 0);

		RowDefinition row2 = new RowDefinition()
		{
			Height = new GridLength(dividedHeight, GridUnitType.Star),
			MinHeight = 30,
		};

		mainGrid.RowDefinitions.Add(row2);
	}
}

 

코드 요약

gridsplitter는 독립된 row에 하나씩 배치된다

rowdefinition은 추가하면 이거 자체가 row다 보니 순서대로 추가가 되지만

gridsplitter를 생성한 다음 그리드에 추가하고 row를 세팅해줘야 분할하고자 하는 위치에 정확하게 추가된다

 

gridsplitter 1개가 생기면 row는 총 3개가 된다

 

 

 

6분할 예시 (divideCnt가 6인 경우 gridsplitter는 5개가 생성됨)

 

반응형
반응형

 

WPF TextBox에 TAB과 Enter를 이용한 편의기능 추가해보기

 


텍스트박스를 텍스트 에디터로 주로 사용할 때 필요한 기능

 

다이어리나 자기소개서처럼 많은 양의 입력을 전달받을 때에는
워드나 텍스트 파일에서 사용하는것처럼 TAB(탭)의 들여쓰기 기능
Enter(엔터)로 다음줄로 연결되게 하는 줄바꿈 기능이 있으면 사용이 편해진다


이러한 편의 기능들을 텍스트박스에다 추가해본걸 기록해봄


먼저, 엔터(Return)키를 눌러 현재 문장의 다음줄로 이동할수있는 줄바꿈 기능을 추가해본다

<Grid>
	<Grid.RowDefinitions>
		<RowDefinition></RowDefinition>
		<RowDefinition></RowDefinition>
	</Grid.RowDefinitions>
	<Grid.ColumnDefinitions>
		<ColumnDefinition></ColumnDefinition>
        <ColumnDefinition></ColumnDefinition>
	</Grid.ColumnDefinitions>
        
	<TextBox Grid.Row="0" Grid.RowSpan="2" Grid.Column="1" Background="BlanchedAlmond" x:Name="textBox1"
	AcceptsReturn="True" AcceptsTab="True" ></TextBox>
</Grid>

바로 AcceptsReturn 값을 True로 지정해주는것

AcceptsReturn True를 지정해주지 않은 상태에서는 엔터를 마구 눌러도
텍스트박스에 새로운 줄로 이동하지 않는다 다만 옆으로 작성될 뿐이다



다음으로는 TAB 키를 누르면 Xaml의 다음 요소로 이동하는게 아니라
텍스트 입력창에서 들여쓰기가 가능해지게 하는 방법을 추가해본다

<TextBox Grid.Row="0" Grid.RowSpan="2" Grid.Column="1" Background="BlanchedAlmond" x:Name="textBox1"
AcceptsReturn="True" AcceptsTab="True" ></TextBox>

위의 내용 그대로에 AcceptsTab 를 True로 지정해주면 탭을 이용한 들여쓰기가 가능해진다

 

 

 

들여쓰기 추가한 내용

 

 

만약 키보드 입력 중간에 저장하는 단축키같이 Ctrl+S 두개 이상의 키보드 이벤트를 받을 필요가 있다면
아래의 글을 참고해보자

 

https://studyingpingu.tistory.com/61

 

[WPF] Xaml, 텍스트박스에 Ctrl+s 키보드 입력받아 저장 단축키 추가하는법

에디터로 사용하는 텍스트 박스에 입력을 하면서 저장하는 단축키를 추가해주고 싶어서 Ctrl키와 S를 눌렀을 때 저장해주는 특정 함수를 호출하는 이벤트를 추가해봄 2개 이상의 단축키 지정 과

studyingpingu.tistory.com

 

반응형
반응형

wpf 샘플예제를 돌려보면서 코드를 구경하려고 하다가 빌드 에러를 마주한 이야기

 

빌드 환경 : Visual studio 2019

 

 

 

위 이미지처럼 지정된 버전이 없어서 빌드가 안된다는 오류가 발생했음

 

당황하지말고 구글에 물어보니 친절한 MS가 미리 작성해둔 페이지를 찾을수있었다

원인은 3가지 정도로 요약되어있다

 

1. global.json 파일에 지정된 sdk 버전이 잘못된 경우

2. global.json 파일에 지정되어있는 sdk 버전이 빌드하려는 PC에 설치되지 않은 경우

3. global.json 파일에 지정된 sdk 버전의 경로가 잘못되어 찾지 못한 경우

 

정도라고 한다

 

 

 

이 오류를 해결하기 할수있는 4가지 방법이 나와있다

 

1. global.json에 지정된 sdk 버전을 설치

2. global.json에 수동으로 다른 sdk버전을 지정해주기

3. global.json에 오타나 다른 문제가 있는지 올바른 global.json 구조를 보고 오타나 기타 문제 파악하기

4. global.json 삭제해서 설치된 최신버전의 sdk가 동작되도록 하기

 

(나는 개인적으로 돌려본것이므로 팀단위로 개발을 진행하고 있다면 확인이 필요할듯하다)

 

 

 

 

그래서 먼저 확인해본 나의 global.json 파일

 

※참고로 global.json 파일의 경로

WPF-Samples-master 폴더에 바로 위치해있어 찾기는 어렵지않다

 

 

global.json에 지정된 sdk 버전은 3.1.301이다

 

 

cmd 창을 열어 dotnet --info를 입력해주면

내 pc에 설치된 닷넷 sdk 버전들을 확인할수있다

 

//설치된 sdk 버전 확인
dotnet --info

 

나는 이미 설치하고 버전을 확인해본 경우라 3.1.414의 sdk 버전이 설치된것을 확인할수있다

 

 

 

 

 

닷넷 sdk를 설치하기 위해

다시 친절한 구글에 .net sdk 3.1.301 을 검색해주면

알아서 다운로드 페이지를 상단에 띄워준다

 

 

 

 

sdk 설치 페이지

https://dotnet.microsoft.com/download/dotnet

 

.NET Downloads (Linux, macOS, and Windows)

Official .NET downloads for Linux, macOS, and Windows. .NET is a free, cross-platform, open-source developer platform for building many different types of applications.

dotnet.microsoft.com

 

 

 

.net 3.1 sdk 중에서 가장 최신 릴리즈 버전이 3.1.414 버전인듯함

 

 

 

설치가 완료된 이후에 빌드를 해줬더니 오류없이 잘 실행되었다

 

 

 

 

 

 

 

출처 :

 

https://github.com/microsoft/WPF-Samples

 

GitHub - microsoft/WPF-Samples: Repository for WPF related samples

Repository for WPF related samples. Contribute to microsoft/WPF-Samples development by creating an account on GitHub.

github.com

 

 

 

https://docs.microsoft.com/ko-kr/dotnet/core/install/windows?tabs=net50 

 

Windows에 .NET 설치

.NET을 설치할 수 있는 Windows 버전에 대해 알아봅니다.

docs.microsoft.com

 

반응형
반응형

먼저,

ico 파일이 없다면 png, jpg 등 이미지 파일을 ico 파일형식으로 변환해주는

온라인 컨버터 사이트에 접속해서 먼저 ico 파일을 만든다

구글링 시 나오는 아무사이트나 방문하면 됨

 

포토샵으로도 가능하지만 포토샵이 없어서 온라인 사이트 방문해야됨

 

 

 

※방법 자체는 어렵지 않은데 처음해보거나 어디인지 위치를 까먹으면 몰라서 못함

 

 

 

 

텍스트 설명

프로젝트 우클릭 -> 속성 -> 응용프로그램 탭에서 아이콘 및 매니페스트의 아이콘 찾아보기

-> 컴퓨터에 있는 로컬 ico 선택 -> 변경완료

 

 

 

 

사진 설명

 

 

 

 

 

 

 

ico 파일을 선택하면 찾아보기 버튼 옆에 입력한 ico 파일이 적용된 모습을 확인할수있다

 

 

 

 

프로그램 실행 시 아이콘이 적용된 모습

 

 

 

 

 

 

 

반응형
반응형

최근 만들어본 WPF 텍스트출력에 쌍따옴표 ("), 일명 double quotes가 필요해서 사용가능한 방법을 찾아보다가

생각보다 간단하지만 외우긴 힘들어서 박제함

 

 

늘 그렇듯 스택오버플로우에도 해답이있다

+MSDN에도 있고

 

 

 

ms 공식 문서

 

문서와 스택오버플로우의 답변에 적혀있는 대로

 

싱글 쿼트를 사용하려면

  • &apos;

쌍따옴표/더블쿼트를 사용하려면

  • &quot;

를 사용해주면 된다

 

<!--사용 예시-->
<TextBlock FontSize="20" Text=" &quot; 입니다."></TextBlock>

 

위의 사용 예 처럼 입력하면 "입니다.가 출력된다

 

"를 사용하고 싶은 자리에 &quots; 를 사용해주면 됨

 

기타 특수문자를 사용하고 싶다면 아래 사이트 방문

 

 

 

참고사이트 : 

 

 

XML Character Entities and XAML - XAML

Describes how special characters are handled in XAML and general considerations for other XML concepts in XAML.

docs.microsoft.com

 

반응형

+ Recent posts