2009-09-27 3 views
1

Я пытаюсь добавить копию/вставку в приложение, редактирующее элементы. Наличие копии данных для набора выбранных элементов должно включать их дублирование или перенос их в другой экземпляр программы. Я попытался это:Почему не работает System.Windows.Forms.Clipboard.GetData/SetData?

const string MyClipboardFormat = "MyClipboardFormat" 

private void copyToolStripMenuItem_Click(object sender, EventArgs e) 
{ 
    XmlDocument xdoc; 
    //add data of selected items 
    Clipboard.SetData(MyClipboardFormat,xdoc); 
} 

private void pasteToolStripMenuItem_Click(object sender, EventArgs e) 
{ 
    XmlDocument xdoc = Clipboard.GetData(MyClipboardFormat) as XmlDocument; 
    if (xdoc == null) 
    throw new Exception("Clipboard does not contain MyClipboardFormat"); 
    //read item data from xdoc 
} 

Я гугл но нашел только биты об использовании GetDataObject/SetDataObject, что эквивалентно тому, что, как представляется, происходят в любом случае, если я использую отражатель, чтобы посмотреть, что делает GetData/SetData.

Должен ли я регистрировать строку формата буфера обмена где-нибудь?

ответ

2

У меня была аналогичная проблема, и, чтобы заставить его работать, мне пришлось сериализовать объект, прежде чем поместить его в буфер обмена и восстановить его после моего звонка в clipboard.getData()

1

Необходимо зарегистрировать свой формат. Используйте DataFormats.GeTFormat(MyClipboardFormat):

Вызов этого метода с собственным форматом именем, чтобы создать новый тип формата буфера обмена . Если указанный формат не существует , этот метод зарегистрирует имя в виде формата буфера обмена с реестром Windows и получит уникальный идентификатор формата .

+0

Нет, это Безразлично» t помочь. Я даже не уверен, что делать с «форматом», который был возвращен сюда. GetData/SetData принимает строку как дескриптор формата. –

 Смежные вопросы

  • Нет связанных вопросов^_^