私にはデザイナーがいます。デザイナーとは正確にはどうVisualStudio
WinForms
ですか。
FrameworkElements
そこにコントロール ( )をドラッグ アンド ドロップします (コントロールのあるツールボックスから)。コントロールは に格納されますGrid
Panel
。
実際には、 (s)
のコピー/貼り付け機能を実装します。UIElement
選択したコントロールを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
、または他のもの)
どんな提案でも大歓迎です。