리치텍스트박스
리치텍스트박스 컨트롤은 워드프로세서 수준의 편집 기능을 가진 컨트롤입니다
텍스트박스 컨트롤의 단점은 처리할 수 있는 텍스트 양에 제한이 있고, 하나의 폰트만
사용할 수 있다는 점입니다. 리치텍스트박스 컨트롤은 이런 문제점을 해결하고 문단 개념을
추가한 텍스트 편집컨트롤입니다
메인메뉴
메뉴도 하나의 컨트롤입니다. 다른 컨트롤과 마찬가지로 도구 상자에서 메인 메뉴
컨트롤을 추가하고 속성을 바꿔줍니다. 메뉴를 구성하려면 먼저 MainMenu 객체를 추가합니다
그리고 폼 디자인 윈도우 상단에 보이는 메뉴 속성을 수정하면 됩니다
MainMenu 객체는 여러 MenuItem 객체를 모아둔 콜렉션 형태로 구성되며, 각각 메뉴 객체는
하나의 메뉴 항목을 나타냅니다. 각 객체마다 속성을 지정해서 메뉴를 정의 합니다 예를 들면
메뉴를 안 보이게 한다거나 체크 표시를 하거나 ,Disable 상태로 만들수 있습니다
MenuItem 객체의 Checked 속성에 true 값을 주면, 메뉴가 보여질 떄 앞 부분에 체크 표시가
붙어 있죠 메뉴를 Disable 시키려면 Enable 값에 false값을 줍니다
도움말에서 마우스 오른쪽 버튼 누르고 DropDownItem 편집을 클릭
컨텍스트 메뉴 구성
컨텍스트메뉴는 컨트롤에서 오른쪽 버튼을 클릭했을 때 나타나는 메뉴입니다
도구 상자에서 ContextMenu 객체를 추가할 수 있습니다
따라하기
리치 텍스트 박스 컨트롤을 추가하고, ContextMenu 객체를 통해서 기본 편집 기능과 폰트/색상 속성을
바꾸어보는 예제입니다 프로젝트 이름과 작업할 폴더를 지정하고 새로운 프로젝트를 생성합니다
다음과 같이 폼 윈도우를 구성하고 컨트롤 속성을 지정합니다
객체 이름 | Text 속성 |
miCut | 잘라내기 |
miCopy | 복사 |
miPaste | 붙여넣기 |
miSelectAll | 모두선택 |
miSeparator | - |
miFont | 폰트 지정 |
miFontColor | - |
miSeparator | 저장하기 |
miSvae | 저장하기 |
miLoad | 읽어오기 |
디자인 윈도우에서 리치텍스트박스 컨틑롤을 선택해보세요 속성 윈도우를 보면, 다음과 같이 컨텍스트 메뉴를
지정할 수 있습니다
ContextMenu 속성을 클릭하면, 현재 폼에 정의된 컨텍스트 메뉴 리스트를 보여줍니다
편집 메뉴 항목을 더블 클릭해서 메뉴 핸들러를 추가합니다
추가한 메뉴 핸들러는 다음과 같이 구현해 줍니다
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void miCut_Click(object sender, EventArgs e)
{
richTextBox1.Cut();//잘라내기
}
private void miPaste_Click(object sender, EventArgs e)
{
richTextBox1.Paste();//붙여넣기
}
private void miCopy_Click(object sender, EventArgs e)
{
richTextBox1.Copy(); //복사
}
private void miSelectAll_Click(object sender, EventArgs e)
{
richTextBox1.SelectAll(); //모두 선택
}
private void miFont_Click(object sender, EventArgs e)
{
if(fontDialog1.ShowDialog() == DialogResult.OK)
richTextBox1.SelectionFont = fontDialog1.Font;
//폰트 스타일 지정
}
private void 폰트색지정ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (colorDialog1.ShowDialog() == DialogResult.OK)
richTextBox1.SelectionColor=colorDialog1.Color;
}
}
SelectionXXX 속성
텍스트박스와 달리 리치텍스트박스는 문단(paragraph)단위 개념이있으며,
스타일을 다양하게 지정할 수 있습니다.
다음은 리치텍스트박스에서 특정 텍스트 영역을 선택하고 스타일을 지정할 떄 사용하는 속성입니다
속성 설명
SelectionFont 선택된 영역에서 폰트 속성을 지정합니다
SelectionColor 선택된 영역에서 색상 속성을 지정합니다
SelectionAlignment 선택된 영역에 정렬을 지정합니다
SelectionBulllet 선택된 영역에서 블렛을 지정합니다
저장하기와 읽어오기 메뉴 핸들러를 추가하고 다음과 같이 구현합니다
private void miSave_Click(object sender, System.EventArgs e)
{
richTextBox1.SaveFile( "one.rtf" );
}
private void miLoad_Click(object sender, System.EventArgs e)
{
richTextBox1.LoadFile( "one.rtf" );
}
SaveFile / LoadFile 메서드
리치텍스트박스 컨트롤은 RTF 포멧을 사용해서 파일을 저장하고 읽어옵니다. 파일을 저장할 때는
SaveFile 메서드를 부르고, 읽어올 때는 LoadFile 메서드를 부릅니다.
메서드에는 파일 이름을 포함한경로를 념겨줍니다
프로그램을 실행해보세요 리치텍스트박스 컨트롤에서 오른쪽 버튼을 누르면 다음과 같이 컨텍스트 메뉴가 뜹니다
메뉴에서 제공하는 편집기능을 사용해보고, 폰트속성도 바꾸어보세요 전체가 하나의 폰트 속성을 갖는것이 아니라 문서의 일부분을 선택해서 폰트 속성을 지정할 수 있습니다.
'.NET > C# Form' 카테고리의 다른 글
C# DateTimePicker 컨트롤 MonthCalender (0) | 2008.10.23 |
---|---|
C# 툴바와 상태바, NotifyIcon 컨트롤 (0) | 2008.10.23 |
C# 트랙바(TrackBar) 픽처박스(PictureBox) 이미지 리스트 (imageList) (0) | 2008.10.22 |
C# 타이머(Timer)와 프로그레스바(ProgreeBar) (0) | 2008.10.22 |
C# 공통 대화상자 컨트롤(파일대화상자,텍스트박스,폰트/색상 대화상자,메세지박스) (0) | 2008.10.22 |
C# 예제로 배우는 컨트롤 (0) | 2008.10.21 |
C# 레이블 ( 레이블 링크) label (0) | 2008.10.21 |
C# 컨트롤 소스 컨트롤의 배열을 작성하려면 - 네이버 퍼옴 (0) | 2008.10.21 |