我有一个设计师,设计师到底怎么样VisualStudio
WinForms
。
我将控件 ( ) 拖放到那里FrameworkElements
(来自带有控件的工具箱)。控件存储在Grid
Panel
.
实际上,我将为(s)
实现复制/粘贴功能。UIElement
我把 Selected 控件放到Clipboard
private readonly DataObject _dataObject = new DataObject();
Copy方法工作正常,它将元素存储在剪贴板中。
private void CopyUIElementToClipboard(FrameworkElement element) {
_dataObject.SetData(element);
Clipboard.SetDataObject(_dataObject);
}
但是在粘贴上我有问题。我无法从剪贴板中检索元素。
public void PasteUIElement() {
var control = _dataObject.GetData(DataFormats.***); //What type should i give it here ?
//I tried all formats from DataFormats via this. But all returns NULL.
TryAll();
//Continue doing other stuff
}
//尝试里面的所有格式,DataFormats
但都返回NULL
private void TryAll() {
var qBitmap = _dataObject.GetData(DataFormats.Bitmap);
var qCommaSeparatedValue = _dataObject.GetData(DataFormats.CommaSeparatedValue);
var qDib = _dataObject.GetData(DataFormats.Dib);
var qEnhancedMetafile = _dataObject.GetData(DataFormats.EnhancedMetafile);
var qFileDrop = _dataObject.GetData(DataFormats.FileDrop);
var qHtml = _dataObject.GetData(DataFormats.Html);
var qLocale = _dataObject.GetData(DataFormats.Locale);
var qMetafilePicture = _dataObject.GetData(DataFormats.MetafilePicture);
var qOemText = _dataObject.GetData(DataFormats.OemText);
var qPalette = _dataObject.GetData(DataFormats.Palette);
var qPenData = _dataObject.GetData(DataFormats.PenData);
var qRiff = _dataObject.GetData(DataFormats.Riff);
var qRtf = _dataObject.GetData(DataFormats.Rtf);
var qSerializable = _dataObject.GetData(DataFormats.Serializable);
var qStringFormat = _dataObject.GetData(DataFormats.StringFormat);
var qSymbolicLink = _dataObject.GetData(DataFormats.SymbolicLink);
var qText = _dataObject.GetData(DataFormats.Text);
var qTiff = _dataObject.GetData(DataFormats.Tiff);
var qUnicodeText = _dataObject.GetData(DataFormats.UnicodeText);
var qWaveAudio = _dataObject.GetData(DataFormats.WaveAudio);
var qXaml = _dataObject.GetData(DataFormats.Xaml);
var qXamlPackage = _dataObject.GetData(DataFormats.XamlPackage);
}
如何从中检索FrameworkElement
元素Clipboard
?
我尝试仅将元素的名称存储到剪贴板并将其粘贴到记事本中。它工作正常。
private void CopyUIElementToClipboard(FrameworkElement element) {
var elementName = element.Name;
_dataObject.SetData(DataFormats.Text, elementName, true);
Clipboard.Clear();
Clipboard.SetDataObject(_dataObject);
}
但是在我的项目中,如何使用Paste完成工作,我遇到了一些麻烦。
也许我应该Clipboard
以另一种格式(Serializable
或其他格式)存储它
任何建议都将受到欢迎。