using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using SftTreeLib70;
using AxSftTreeLib70;
using Softelvdm.OLEConvert;
namespace OLEDrag
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
public System.Windows.Forms.PictureBox Picture2;
public System.Windows.Forms.TextBox Text1;
public System.Windows.Forms.Button Command1;
public System.Windows.Forms.PictureBox Picture1;
public System.Windows.Forms.Label Label5;
public System.Windows.Forms.Label DropTarget;
public System.Windows.Forms.PictureBox DropTargetPic;
public System.Windows.Forms.Label Label4;
public System.Windows.Forms.Label Label3;
public System.Windows.Forms.Label Label2;
public System.Windows.Forms.Label Label1;
private AxSftTreeLib70.AxSftTree axSftTree1;
private Softelvdm.OCXHelper.SftHelperComponent sftHelperComponent1;
private System.ComponentModel.IContainer components;
public Form1()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
//
// TODO: Add any constructor code after InitializeComponent call
//
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(Form1));
this.axSftTree1 = new AxSftTreeLib70.AxSftTree();
this.Picture2 = new System.Windows.Forms.PictureBox();
this.Text1 = new System.Windows.Forms.TextBox();
this.Command1 = new System.Windows.Forms.Button();
this.Picture1 = new System.Windows.Forms.PictureBox();
this.Label5 = new System.Windows.Forms.Label();
this.DropTarget = new System.Windows.Forms.Label();
this.DropTargetPic = new System.Windows.Forms.PictureBox();
this.Label4 = new System.Windows.Forms.Label();
this.Label3 = new System.Windows.Forms.Label();
this.Label2 = new System.Windows.Forms.Label();
this.Label1 = new System.Windows.Forms.Label();
this.sftHelperComponent1 = new Softelvdm.OCXHelper.SftHelperComponent(this.components);
((System.ComponentModel.ISupportInitialize)(this.axSftTree1)).BeginInit();
this.SuspendLayout();
//
// axSftTree1
//
this.axSftTree1.Location = new System.Drawing.Point(8, 8);
this.axSftTree1.Name = "axSftTree1";
this.axSftTree1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axSftTree1.OcxState")));
this.axSftTree1.Size = new System.Drawing.Size(257, 329);
this.axSftTree1.TabIndex = 12;
this.axSftTree1.DragStarting += new AxSftTreeLib70._DSftTreeEvents_DragStartingEventHandler(this.axSftTree1_DragStarting);
this.axSftTree1.OLEStartDrag += new AxSftTreeLib70._DSftTreeEvents_OLEStartDragEventHandler(this.axSftTree1_OLEStartDrag);
this.axSftTree1.OLEDragDrop += new AxSftTreeLib70._DSftTreeEvents_OLEDragDropEventHandler(this.axSftTree1_OLEDragDrop);
//
// Picture2
//
this.Picture2.BackColor = System.Drawing.SystemColors.Control;
this.Picture2.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.Picture2.Cursor = System.Windows.Forms.Cursors.Default;
this.Picture2.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.Picture2.ForeColor = System.Drawing.SystemColors.ControlText;
this.Picture2.Image = ((System.Drawing.Bitmap)(resources.GetObject("Picture2.Image")));
this.Picture2.Location = new System.Drawing.Point(302, 165);
this.Picture2.Name = "Picture2";
this.Picture2.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.Picture2.Size = new System.Drawing.Size(25, 17);
this.Picture2.TabIndex = 18;
this.Picture2.TabStop = false;
this.Picture2.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Picture2_MouseDown);
//
// Text1
//
this.Text1.AcceptsReturn = true;
this.Text1.AutoSize = false;
this.Text1.BackColor = System.Drawing.SystemColors.Window;
this.Text1.Cursor = System.Windows.Forms.Cursors.IBeam;
this.Text1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.Text1.ForeColor = System.Drawing.SystemColors.WindowText;
this.Text1.Location = new System.Drawing.Point(336, 165);
this.Text1.MaxLength = 0;
this.Text1.Name = "Text1";
this.Text1.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.Text1.Size = new System.Drawing.Size(96, 19);
this.Text1.TabIndex = 16;
this.Text1.Text = "Text1";
this.Text1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Text1_MouseDown);
//
// Command1
//
this.Command1.BackColor = System.Drawing.SystemColors.Control;
this.Command1.Cursor = System.Windows.Forms.Cursors.Default;
this.Command1.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.Command1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.Command1.ForeColor = System.Drawing.SystemColors.ControlText;
this.Command1.Location = new System.Drawing.Point(366, 8);
this.Command1.Name = "Command1";
this.Command1.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.Command1.Size = new System.Drawing.Size(73, 27);
this.Command1.TabIndex = 13;
this.Command1.Text = "Close";
this.Command1.Click += new System.EventHandler(this.Command1_Click);
//
// Picture1
//
this.Picture1.BackColor = System.Drawing.SystemColors.Control;
this.Picture1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.Picture1.Cursor = System.Windows.Forms.Cursors.Default;
this.Picture1.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.Picture1.ForeColor = System.Drawing.SystemColors.ControlText;
this.Picture1.Image = ((System.Drawing.Bitmap)(resources.GetObject("Picture1.Image")));
this.Picture1.Location = new System.Drawing.Point(270, 165);
this.Picture1.Name = "Picture1";
this.Picture1.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.Picture1.Size = new System.Drawing.Size(25, 17);
this.Picture1.TabIndex = 15;
this.Picture1.TabStop = false;
this.Picture1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Picture1_MouseDown);
//
// Label5
//
this.Label5.BackColor = System.Drawing.SystemColors.Control;
this.Label5.Cursor = System.Windows.Forms.Cursors.Default;
this.Label5.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.Label5.ForeColor = System.Drawing.SystemColors.ControlText;
this.Label5.Location = new System.Drawing.Point(6, 341);
this.Label5.Name = "Label5";
this.Label5.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.Label5.Size = new System.Drawing.Size(433, 49);
this.Label5.TabIndex = 22;
this.Label5.Text = "Drag items from the tree control to the drop target shown above. Or drag the ima" +
"ges or text from the drag sources above. You can also use Windows Explorer as a" +
" drag source or simply drag && drop within the tree control.";
//
// DropTarget
//
this.DropTarget.AllowDrop = true;
this.DropTarget.BackColor = System.Drawing.SystemColors.Control;
this.DropTarget.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.DropTarget.Cursor = System.Windows.Forms.Cursors.Default;
this.DropTarget.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.DropTarget.ForeColor = System.Drawing.SystemColors.ControlText;
this.DropTarget.Location = new System.Drawing.Point(294, 301);
this.DropTarget.Name = "DropTarget";
this.DropTarget.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.DropTarget.Size = new System.Drawing.Size(145, 25);
this.DropTarget.TabIndex = 21;
this.DropTarget.DragEnter += new System.Windows.Forms.DragEventHandler(this.DropTarget_DragEnter);
this.DropTarget.DragDrop += new System.Windows.Forms.DragEventHandler(this.DropTarget_DragDrop);
//
// DropTargetPic
//
this.DropTargetPic.Cursor = System.Windows.Forms.Cursors.Default;
this.DropTargetPic.Location = new System.Drawing.Point(270, 301);
this.DropTargetPic.Name = "DropTargetPic";
this.DropTargetPic.Size = new System.Drawing.Size(25, 25);
this.DropTargetPic.TabIndex = 23;
this.DropTargetPic.TabStop = false;
this.DropTargetPic.DragEnter += new System.Windows.Forms.DragEventHandler(this.DropTargetPic_DragEnter);
this.DropTargetPic.DragDrop += new System.Windows.Forms.DragEventHandler(this.DropTargetPic_DragDrop);
//
// Label4
//
this.Label4.BackColor = System.Drawing.SystemColors.Control;
this.Label4.Cursor = System.Windows.Forms.Cursors.Default;
this.Label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.Label4.ForeColor = System.Drawing.SystemColors.ControlText;
this.Label4.Location = new System.Drawing.Point(270, 240);
this.Label4.Name = "Label4";
this.Label4.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.Label4.Size = new System.Drawing.Size(161, 56);
this.Label4.TabIndex = 20;
this.Label4.Text = "Drag items from the tree control to the drop target below. In this example, only" +
" one item is shown.";
//
// Label3
//
this.Label3.BackColor = System.Drawing.SystemColors.Control;
this.Label3.Cursor = System.Windows.Forms.Cursors.Default;
this.Label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.Label3.ForeColor = System.Drawing.SystemColors.ControlText;
this.Label3.Location = new System.Drawing.Point(270, 213);
this.Label3.Name = "Label3";
this.Label3.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.Label3.Size = new System.Drawing.Size(161, 25);
this.Label3.TabIndex = 19;
this.Label3.Text = "Drop Target";
//
// Label2
//
this.Label2.BackColor = System.Drawing.SystemColors.Control;
this.Label2.Cursor = System.Windows.Forms.Cursors.Default;
this.Label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.Label2.ForeColor = System.Drawing.SystemColors.ControlText;
this.Label2.Location = new System.Drawing.Point(270, 53);
this.Label2.Name = "Label2";
this.Label2.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.Label2.Size = new System.Drawing.Size(161, 25);
this.Label2.TabIndex = 17;
this.Label2.Text = "Drag Sources";
//
// Label1
//
this.Label1.BackColor = System.Drawing.SystemColors.Control;
this.Label1.Cursor = System.Windows.Forms.Cursors.Default;
this.Label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.Label1.ForeColor = System.Drawing.SystemColors.ControlText;
this.Label1.Location = new System.Drawing.Point(270, 85);
this.Label1.Name = "Label1";
this.Label1.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.Label1.Size = new System.Drawing.Size(161, 73);
this.Label1.TabIndex = 14;
this.Label1.Text = "Drag the images or text shown below to the tree control or use Windows Explorer t" +
"o drag one or more file names and drop them on the tree control.";
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.CancelButton = this.Command1;
this.ClientSize = new System.Drawing.Size(445, 395);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.Picture2,
this.Text1,
this.Command1,
this.Picture1,
this.Label5,
this.DropTarget,
this.DropTargetPic,
this.Label4,
this.Label3,
this.Label2,
this.Label1,
this.axSftTree1});
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Name = "Form1";
this.Text = "Softel vdm, Inc. - DragDrop Sample";
this.Load += new System.EventHandler(this.Form1_Load);
((System.ComponentModel.ISupportInitialize)(this.axSftTree1)).EndInit();
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
//--locate-marker--
private void Command1_Click(object sender, System.EventArgs e) {
Application.Exit();
}
private void Form1_Load(object sender, System.EventArgs e) {
DropTargetPic.AllowDrop = true;
int i;
axSftTree1.Items.Add("Item 0");
i = axSftTree1.Items.Add("Item 1");
axSftTree1.get_Item(i).Level = 1;
i = axSftTree1.Items.Add("Item 2");
axSftTree1.get_Item(i).Level = 2;
i = axSftTree1.Items.Add("Item 3");
axSftTree1.get_Item(i).Level = 1;
}
private void axSftTree1_DragStarting(object sender, AxSftTreeLib70._DSftTreeEvents_DragStartingEvent e) {
axSftTree1.CancelMode(); // .NET controls drag&drop, so tree control needs to cancel
// This section demonstrates drag (&drop) using the .NET DoDragDrop method
// THIS CODE IS ONLY USED IF DRAGMETHOD IS SET TO ( 1 - Manual ) or SftTreeDragMethodConstants.dragSftTreeManual
int curr = axSftTree1.Items.Current;
// cell text
System.Windows.Forms.DataObject data = new System.Windows.Forms.DataObject();
data.SetData(DataFormats.Text, axSftTree1.get_Cell(curr, 0).Text);
// item picture
SftPictureObject img = null;
if (axSftTree1.get_Item(curr).Image.Type == SftPictureTypeConstants.sftTypeIDispatch) {
img = axSftTree1.get_Item(curr).Image;
} else {
if (axSftTree1.get_Item(curr).Expanded)
img = axSftTree1.Items.ItemImageExpanded;
else if (axSftTree1.get_Item(curr).DependentAllCount > 0)
img = axSftTree1.Items.ItemImageExpandable;
else
img = axSftTree1.Items.ItemImageLeaf;
}
Image sendingImage = OLECvt.ToImage(img.Picture);
data.SetData(DataFormats.Bitmap, true, sendingImage);
DoDragDrop(data, DragDropEffects.Copy);
}
private void axSftTree1_OLEStartDrag(object sender, AxSftTreeLib70._DSftTreeEvents_OLEStartDragEvent e) {
// This section demonstrates drag&drop) using OLE mechanisms built into this control
// THIS CODE IS ONLY USED IF DRAGMETHOD IS SET TO ( 3 - OLEDrag ) or SftTreeDragMethodConstants.dragSftTreeOLE
int curr = axSftTree1.Items.Current;
// cell text
e.data.SetData(axSftTree1.get_Cell(curr, 0).Text, SftOLEClipboardConstants.sftCFText);
// item picture
SftPictureObject img = null;
if (axSftTree1.get_Item(curr).Image.Type == SftPictureTypeConstants.sftTypeIDispatch) {
img = axSftTree1.get_Item(curr).Image;
} else {
if (axSftTree1.get_Item(curr).Expanded)
img = axSftTree1.Items.ItemImageExpanded;
else if (axSftTree1.get_Item(curr).DependentAllCount > 0)
img = axSftTree1.Items.ItemImageExpandable;
else
img = axSftTree1.Items.ItemImageLeaf;
}
e.data.SetData(img.Picture, SftOLEClipboardConstants.sftCFDIB);
e.data.SetData(img.Picture, SftOLEClipboardConstants.sftCFBitmap);
e.allowedEffects = 3;
}
private void DropTarget_DragEnter(object sender, System.Windows.Forms.DragEventArgs e) {
if (e.Data.GetDataPresent(DataFormats.Text, true) || e.Data.GetDataPresent(DataFormats.Bitmap, true))
e.Effect = DragDropEffects.Copy;
else
e.Effect = DragDropEffects.None;
}
private void DropTarget_DragDrop(object sender, System.Windows.Forms.DragEventArgs e) {
String[] arrayOfFormats = e.Data.GetFormats(true); // informational
if (e.Data.GetDataPresent(DataFormats.Text, true))
DropTarget.Text = (string) e.Data.GetData(DataFormats.Text, true);
if (e.Data.GetDataPresent(DataFormats.Bitmap, true))
DropTargetPic.Image = (Image) e.Data.GetData(DataFormats.Bitmap, true);
}
private void DropTargetPic_DragEnter(object sender, System.Windows.Forms.DragEventArgs e) {
if (e.Data.GetDataPresent(DataFormats.Bitmap, true))
e.Effect = DragDropEffects.Copy;
else
e.Effect = DragDropEffects.None;
}
private void DropTargetPic_DragDrop(object sender, System.Windows.Forms.DragEventArgs e) {
String[] arrayOfFormats = e.Data.GetFormats(true); // informational
if (e.Data.GetDataPresent(DataFormats.Bitmap, true)) {
object o = e.Data.GetData(DataFormats.Bitmap, true);
DropTargetPic.Image = (Image) o;
}
}
private void axSftTree1_OLEDragDrop(object sender, AxSftTreeLib70._DSftTreeEvents_OLEDragDropEvent e) {
// get horizontal extent and width of column 0
int horzExtent = axSftTree1.Items.HorizontalExtentPix;
int firstColumnWidth = axSftTree1.get_Column(0).WidthPix;
int insertAt = axSftTree1.Items.DropHighlight;
if (insertAt < 0) return;
if (e.data.GetFormat((short) SftOLEClipboardConstants.sftCFText)) {
short lvl = axSftTree1.get_Item(insertAt).Level;
string str = (string) e.data.GetData(SftOLEClipboardConstants.sftCFText);
int newItem = axSftTree1.Items.Insert(insertAt + 1, str);
axSftTree1.get_Item(newItem).Level = (short) (lvl + 1);
}
if (e.data.GetFormat((short) SftOLEClipboardConstants.sftCFDIB)) {
axSftTree1.get_Cell(insertAt, 0).Image.Picture = (stdole.IPictureDisp)e.data.GetData((short) SftOLEClipboardConstants.sftCFDIB);
axSftTree1.get_Cell(insertAt, 0).ImageHAlign = SftTreeHAlignConstants.halignSftTreeRight;
}
if (e.data.GetFormat((short) SftOLEClipboardConstants.sftCFBitmap)) {
axSftTree1.get_Cell(insertAt, 0).Image.Picture = (stdole.IPictureDisp)e.data.GetData((short) SftOLEClipboardConstants.sftCFBitmap);
axSftTree1.get_Cell(insertAt, 0).ImageHAlign = SftTreeHAlignConstants.halignSftTreeRight;
}
if (e.data.GetFormat((short) SftOLEClipboardConstants.sftCFFiles)) {
axSftTree1.BulkUpdate = true;
short lvl = axSftTree1.get_Item(insertAt).Level;
int newItem = insertAt + 1;
for (int i = e.data.Files.Count ; i >= 1 ; --i) {
newItem = axSftTree1.Items.Insert(newItem, e.data.Files[i]);
axSftTree1.get_Item(newItem).Level = (short) (lvl + 1);
}
axSftTree1.BulkUpdate = false;
}
// make horizontal extent and width of column 0 wider than previous
// setting, but never smaller
axSftTree1.ColumnsObj.MakeOptimal();
axSftTree1.Items.RecalcHorizontalExtent();
if (horzExtent > axSftTree1.Items.HorizontalExtent)
axSftTree1.Items.HorizontalExtent = horzExtent;
if (firstColumnWidth > axSftTree1.get_Column(0).WidthPix)
axSftTree1.get_Column(0).WidthPix = firstColumnWidth;
}
private void Picture1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) {
System.Windows.Forms.DataObject data = new System.Windows.Forms.DataObject();
data.SetData(DataFormats.Bitmap, true, Picture1.Image);
DoDragDrop(data, DragDropEffects.Copy);
}
private void Picture2_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) {
System.Windows.Forms.DataObject data = new System.Windows.Forms.DataObject();
data.SetData(DataFormats.Dib, true, Picture2.Image);
DoDragDrop(data, DragDropEffects.Copy);
}
private void Text1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) {
System.Windows.Forms.DataObject data = new System.Windows.Forms.DataObject();
data.SetData(DataFormats.Text, Text1.Text);
DoDragDrop(data, DragDropEffects.Copy);
}
}
}