121 lines
2.2 KiB
C#
121 lines
2.2 KiB
C#
|
using System;
|
||
|
using System.Windows.Forms;
|
||
|
|
||
|
namespace System.Windows.Forms.Design
|
||
|
{
|
||
|
// A IDataObject that supports Control and Control[] format
|
||
|
//
|
||
|
internal class ControlDataObject : IDataObject
|
||
|
{
|
||
|
private object _data = null;
|
||
|
private string _format = null;
|
||
|
|
||
|
public ControlDataObject ()
|
||
|
{
|
||
|
_data = null;
|
||
|
_format = null;
|
||
|
}
|
||
|
|
||
|
public ControlDataObject (Control control)
|
||
|
{
|
||
|
SetData (control);
|
||
|
}
|
||
|
|
||
|
public ControlDataObject (Control[] controls)
|
||
|
{
|
||
|
SetData (controls);
|
||
|
}
|
||
|
|
||
|
public object GetData (Type format)
|
||
|
{
|
||
|
return this.GetData (format.ToString ());
|
||
|
}
|
||
|
|
||
|
public object GetData (string format)
|
||
|
{
|
||
|
return this.GetData (format, true);
|
||
|
}
|
||
|
|
||
|
public object GetData (string format, bool autoConvert)
|
||
|
{
|
||
|
if (format == _format) {
|
||
|
return _data;
|
||
|
}
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
public bool GetDataPresent (Type format)
|
||
|
{
|
||
|
return this.GetDataPresent (format.ToString());
|
||
|
}
|
||
|
|
||
|
public bool GetDataPresent (string format)
|
||
|
{
|
||
|
return this.GetDataPresent (format, true);
|
||
|
}
|
||
|
|
||
|
public bool GetDataPresent (string format, bool autoConvert)
|
||
|
{
|
||
|
if (format == _format) {
|
||
|
return true;
|
||
|
}
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
public string[] GetFormats ()
|
||
|
{
|
||
|
return this.GetFormats (true);
|
||
|
}
|
||
|
|
||
|
public string[] GetFormats (bool autoConvert)
|
||
|
{
|
||
|
string[] formats = new string[2];
|
||
|
formats[0] = typeof (Control).ToString ();
|
||
|
formats[1] = typeof (Control[]).ToString ();
|
||
|
return formats;
|
||
|
}
|
||
|
|
||
|
public void SetData (object data)
|
||
|
{
|
||
|
if (data is Control)
|
||
|
this.SetData (typeof (Control), data);
|
||
|
else if (data is Control[])
|
||
|
this.SetData (typeof (Control[]), data);
|
||
|
}
|
||
|
|
||
|
public void SetData (Type format, object data)
|
||
|
{
|
||
|
this.SetData (format.ToString (), data);
|
||
|
}
|
||
|
|
||
|
public void SetData (string format, object data)
|
||
|
{
|
||
|
this.SetData (format, true, data);
|
||
|
}
|
||
|
|
||
|
public void SetData (string format, bool autoConvert, object data)
|
||
|
{
|
||
|
if (ValidateFormat (format)) {
|
||
|
_data = data;
|
||
|
_format = format;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private bool ValidateFormat (string format)
|
||
|
{
|
||
|
bool valid = false;
|
||
|
|
||
|
string[] formats = GetFormats ();
|
||
|
foreach (string f in formats) {
|
||
|
if (f == format) {
|
||
|
valid = true;
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return valid;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|