ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C# 리치텍스트박스와 메뉴(MenuStrip) 컨텍스트메뉴(ContextMeneu)
    .NET/C# Form 2008. 10. 22. 04:10
    반응형



    리치텍스트박스


    리치텍스트박스 컨트롤은 워드프로세서 수준의 편집 기능을 가진 컨트롤입니다
    텍스트박스 컨트롤의 단점은 처리할 수 있는 텍스트 양에 제한이 있고, 하나의 폰트만
    사용할 수 있다는 점입니다. 리치텍스트박스 컨트롤은 이런 문제점을 해결하고 문단 개념을
    추가한 텍스트 편집컨트롤입니다



    메인메뉴

    메뉴도 하나의 컨트롤입니다. 다른 컨트롤과 마찬가지로 도구 상자에서 메인 메뉴
    컨트롤을 추가하고 속성을 바꿔줍니다. 메뉴를 구성하려면 먼저 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 메서드를 부릅니다.
    메서드에는 파일 이름을 포함한경로를 념겨줍니다


    프로그램을 실행해보세요 리치텍스트박스 컨트롤에서 오른쪽 버튼을 누르면 다음과 같이 컨텍스트 메뉴가 뜹니다


    메뉴에서 제공하는 편집기능을 사용해보고, 폰트속성도 바꾸어보세요 전체가 하나의 폰트 속성을 갖는것이 아니라 문서의 일부분을 선택해서 폰트 속성을 지정할 수 있습니다.


    편집한 문서를 저장했다가 다시 읽어보세요 편의상 RTF 파일 이름을 코드에 지정해두었습니다














     

    반응형

    댓글

Designed by Tistory.