2014-01-28 3 views
2

Excel에서 복사하여 붙여 넣을 수있는 DataGrid가 있습니다. 꽤 일반적인 시나리오. 복사 및 붙여 넣기 기능을 구현했습니다. 그러나이 응용 프로그램에는 여러 개의 DataGrid가 있으며 데이터가 다르므로 한 그리드에서 다른 그리드로 데이터를 복사하지 못하게하고 싶습니다.다른 형식으로 복사하여 붙여 넣기

이 그리드의 개체를 원하는 형식으로 직렬화 할 수 있으므로 "이 데이터는 해당 그리드에만 적용됩니다"라는 메타 데이터를 추가하는 것은 간단합니다. 메타 데이터를 추가 할 수는 없으므로 메타 데이터를 추가 할 수 없습니다. 내 응용 프로그램에서 하나의 형식으로 데이터를 붙여 넣을 수있게 해주는이 문제에 대한 해결책이 있긴하지만 Excel이 여전히 올바르게 처리됩니까?

답변

5

clipboard class을 보면 텍스트를 설정할 수 있지만 더 많이 할 수 있습니다. 클립 보드를 사용하여 수행하고자하는 고급 기능 대부분은 "SetDataObject"및 "GetDataObject"루틴을 중심으로 회전합니다. 여러 형식으로이를 사용하려면 지정할 수 있습니다 :이 작업을 수행 한 후에

var serializableObject = new MyObject(); 

var clipData = new DataObject(); 
clipData.SetData(DataFormats.Text, "abcdefg"); 
clipData.SetData("CustomFormat", serializableObject); 
Clipboard.SetDataObject(data); 

가 다시이 반전하고 사용자 정의 형식의 데이터를 요청하여 클립 보드에서 데이터를 얻을 수 있습니다. http://msdn.microsoft.com/en-us/library/637ys738(v=vs.110).aspx : Microsoft에서 더 완전한 예를 들어

var clipData = (DataObject)Clipboard.GetDataObject(); 
var myObject = clipData.GetData("CustomFormat") as MyObject; 

은이 페이지를 참조하십시오 간단히 역 호출처럼 보인다. 여러 형식의 사용법을 설명하는 하단을 살펴보십시오.

희망이 도움이됩니다. 행운을 빌어 요!

+0

굉장합니다, 감사합니다! – ConditionRacer