반응형
파일을 Drag&Drop해서 프리뷰 하는 방법에 대해서 간략하게 적어본다.
일단, 아래의 링크에 접속해서 파일을 다운로드 받아야한다.
http://www.adobe.com/devnet/acrobat/sdk/eula.html
- Agree and download Acrobat DC SDK for Windows (ZIP, 22.2 MB)
- Agree and download Acrobat DC SDK for Macintosh (DMG, 41.3 MB)
- Agree and download Acrobat XI SDK for Windows (ZIP, 52.2 MB)
- Agree and download Acrobat XI SDK for Macintosh (DMG, 48.6 MB)
- Agree and download Acrobat X SDK for Windows (ZIP, 52.2 MB)
- Agree and download Acrobat X SDK for Macintosh (DMG, 49.3 MB)
자신의 환경에 맞는 파일을 다운받도록 합니다.
<소스관련>
화면구성은 아래와 같습니다. (일본에서 개발중이라, 일본어가 섞여 있습니다.)
화면을 구성한 컨트롤은 아래와 같다.
리스트박스 1
PrintPreview 1
PictureBox 1
printDocument 1
실행하면, 아래와 같은 동작을 합니다.
리스트박스에 엑셀파일, PDF 파일을 드래그 앤 드롭 실시
물론, PDF 파일이기때문에 양쪽에 표시된 화살표를 클릭해서 추가 기능을 열고 접을수 있습니다.
코드는 아래와 같습니다.
using System;
using System.Drawing;
using System.Windows.Forms;
namespace DragAndDrop
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//ListBox1のDragEnterイベントハンドラ
private void ListBox1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
{
//コントロール内にドラッグされたとき実行される
if (e.Data.GetDataPresent(DataFormats.FileDrop))
//ドラッグされたデータ形式を調べ、ファイルのときはコピーとする
e.Effect = DragDropEffects.Copy;
else
//ファイル以外は受け付けない
e.Effect = DragDropEffects.None;
}
//ListBox1のDragDropイベントハンドラ
private void ListBox1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
//コントロール内にドロップされたとき実行される
//ドロップされたすべてのファイル名を取得する
string[] fileName = (string[])e.Data.GetData(DataFormats.FileDrop, false);
//ListBoxに追加する
listBox1.Items.AddRange(fileName);
}
private void pictureBox1_Click(object sender, EventArgs e)
{
if (listBox1.SelectedItem != null)
{
DialogResult dr = MessageBox.Show("指定したファイルを削除しますか?", "【ファイル削除】", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
if (dr == DialogResult.OK)
{
System.IO.File.Delete(listBox1.SelectedItem.ToString());
listBox1.Items.Remove(listBox1.SelectedItem);
}
}
else
{
MessageBox.Show("選択されたアイテムがありません。", "【ファイル削除】", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void listBox1_DoubleClick(object sender, EventArgs e)
{
// 選択したファイルが存在する場合
if (listBox1.SelectedItem != null)
{
// 拡張子を取得
string extensionKey = System.IO.Path.GetExtension(listBox1.SelectedItem.ToString()).ToLower();
switch (extensionKey)
{
case ".pdf": // PDFファイル
// ブラウザコントロールの作成
axAcroPDF1.Visible = true;
printPreviewControl1.Visible = false;
axAcroPDF1.LoadFile(listBox1.SelectedItem.ToString());
break;
case ".csv": // CSVファイル
axAcroPDF1.Visible = false;
printPreviewControl1.Visible = true;
printPreviewControl1.Document = printDocument1;
break;
case ".xlsx": // EXCELファイル
axAcroPDF1.Visible = false;
printPreviewControl1.Visible = true;
break;
default:
axAcroPDF1.Visible = false;
printPreviewControl1.Visible = false;
/* 特定できてない拡張子が来た場合を想定 */
break;
}
}
}
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
//画像を読み込む
Image img = Image.FromFile(listBox1.SelectedItem.ToString());
//画像を描画する
e.Graphics.DrawImage(img, 0, 0, img.Width, img.Height);
//次のページがないことを通知する
e.HasMorePages = false;
//後始末をする
img.Dispose();
}
}
}
소스에서 xlsx(엑셀) csv에 대해서는 아직 구현하지 않았고 보류중인 기능입니다.
참고로, 아래의 링크에 현재 구성된 소스
사용된 소스 전체는 아래의 링크에서 다운받을수 있습니다.
아래의 계정을 github에서 follow 해두시면, 수정 및 업데이트 내용을 알람으로 받으실수 있습니다.
https://github.com/sungmanko/DragAndDrop
추가로 궁금하신점이 있으시면 아래의 링크를 통해서도 보다 많은 정보를 얻으실수 있습니다.
도움되시길 바랍니다.
<C#가이드>
<C# 8.0의 새로운 기능>
<VB가이드>
<VB새로운기능>
반응형
'C#' 카테고리의 다른 글
WebPage에서 컴퓨터에있는 exe파일 실행하기 #1 (1) | 2020.08.05 |
---|---|
WPF 성능 개선 초기 표시(렌더링) 속도개선 (0) | 2020.03.25 |
C# TabControl TabPage안의 TextBox 생성 (0) | 2019.03.15 |
ShowDialog로 호출되던 폼을 Show로 바꾸면서 화면숨김 (0) | 2019.03.11 |
비동기처리에 대한 이해와 설명 (0) | 2019.02.20 |