기계는 거짓말하지 않는다

C# Windows Forms Clipboard 텍스트, 이미지 얻기 본문

C#

C# Windows Forms Clipboard 텍스트, 이미지 얻기

KillinTime 2021. 7. 10. 18:36

클립보드에 있는 텍스트나 이미지를 가지고 오는 메서드는 기본 제공된다.

System.Windows.Forms.Clipboard 클래스를 이용하면 된다.

그 외 오디오 스트림, 데이터 등도 얻어올 수 있다.

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        this.KeyDown += FormCtrlV_KeyDownEvent; // 폼 키 입력 이벤트
        richTextBox1.KeyDown += PreventRichTextBoxImageCopy_KeyDownEvent; // richTextBox 이미지 복사 방지
    }
    private void FormCtrlV_KeyDownEvent(object sender, KeyEventArgs e)
    {
        if(e.Modifiers == Keys.Control && e.KeyCode == Keys.V)
        {
            if(Clipboard.ContainsText())
            {
                richTextBox1.AppendText(Clipboard.GetText()); // 텍스트 얻기
            }
            else if(Clipboard.ContainsImage())
            {
                pictureBox1.Image = Clipboard.GetImage(); // 이미지 얻기
            }
        }
    }

    private void PreventRichTextBoxImageCopy_KeyDownEvent(object sender, KeyEventArgs e)
    {
        if (e.Modifiers == Keys.Control && e.KeyCode == Keys.V)
        {
            if(Clipboard.ContainsImage())
            {
                e.Handled = true;
            }
            else if (Clipboard.ContainsText()) // 폼 키 입력 이벤트에 있으므로 막는다
            {
                e.Handled = true;
            }
            richTextBox1.SelectionStart = richTextBox1.Text.Length; // 스크롤 가장 아래로
            richTextBox1.ScrollToCaret();
        }
    }
}

폼에 키 입력을 받기 위해서는 KeyPreview 속성을 True로 설정해야 한다.

 

캡처 도구(오른쪽)에서 복사하여 붙여넣은 모습(왼쪽)
메모장 텍스트 복사

 

'C#' 카테고리의 다른 글

C# 소수점 제한, 천 단위 콤마 출력  (0) 2021.07.12
C# Windows Forms MessageBox  (0) 2021.07.11
C# Windows Forms 키 입력 필터  (0) 2021.07.10
C# Windows Forms 키 입력 활성화, 동시 키 입력  (0) 2021.07.07
C# using문, Dispose  (0) 2021.06.15
Comments