2008-11-12 11 views
5

Tôi đang cố gắng sao chép cả hình ảnh từ tệp và văn bản từ tệp vào khay nhớ tạm. Ý định của tôi là sau đó mở một tài liệu word hoặc một email outlook và dán cả văn bản và hình ảnh trong một lệnh dán tiêu chuẩn (ví dụ như CTRL-V). Tôi có thể làm cả hai cách dễ dàng một cách dễ dàng, nhưng làm cho cả hai trong một hoạt động dường như không hoạt động.Làm cách nào để sao chép hình ảnh và văn bản vào khay nhớ tạm làm một đối tượng?

Đây là cách tôi đã có hai làm việc như hoạt động riêng biệt (chỉ dòng mã có liên quan tất nhiên, với try/catch tước ra vv):

Add Image to Clipboard:

.. .

Bitmap imageToAdd = new Bitmap(imageFilePath); 
Clipboard.SetImage(imageToAdd); 

...

Thêm văn bản vào Clipboard:

...

StreamReader rdr = new StreamReader(textFilePath); 
string text = rdr.ReadToEnd(); 

Clipboard.SetText(text); 

...

Tôi đang sử dụng C# và .net 2.0 khuôn khổ và nhắm mục tiêu Windows XP (và có khả năng Vista trong tương lai gần).

TIA

Trả lời

1

tôi nhận thấy chỉ có một đối tượng có thể được thông qua vào

Trong trường hợp đó, khi người dùng nhấn lệnh để dán, mã của bạn có thể thực hiện hai chức năng hoặc một hàm đệ quy và mỗi lần nhận dữ liệu bạn muốn và dán vào.

Vì vậy, hãy xem vòng lặp hoặc đệ quy.

1

Có lẽ bạn có thể sử dụng SetDataObject đòi hỏi một tham số đối tượng, bạn có thể sử dụng một mảng đối tượng?

Mảng đối tượng có thể chứa dữ liệu bắt buộc của bạn.

Xem liên kết này:.

http://msdn.microsoft.com/en-us/library/5b8kt5z4.aspx

+0

Một chương trình chẳng hạn như triển vọng hoặc MS Word hiểu để hiển thị cả hai đối tượng nếu tôi làm điều đó với một mảng? Tôi sẽ cần để có thể mở bất cứ chương trình nào và chỉ cần nhấn CTRL-V để dán cả hai đối tượng cùng một lúc. –

4

Bạn có thể sử dụng RTF, có thể kết hợp văn bản và đồ họa. Lưu ý rằng bạn có thể có CF_BITMAP và CF_TEXT trên khay nhớ tạm thời cùng một lúc. Nhưng nó không hữu ích. Bạn sẽ nhận được văn bản khi bạn dán vào notepad, bạn sẽ nhận được bitmap khi bạn dán vào Paint, và hầu hết các ứng dụng khác sẽ chọn một hoặc khác, nhưng không bao giờ cả hai. Vì vậy, nó chỉ đơn thuần là học tập. Loại gọn gàng, theo cách mà vận chuyển trục trặc trên Star Trek được gọn gàng. Nhưng cũng lộn xộn.

+1

Đây là câu trả lời đúng cho câu hỏi này. Hoặc bạn nên sử dụng RTF hoặc sử dụng định dạng clipboard nội bộ của MS Office và tôi không biết liệu nó có được ghi chép hay không. Ngay cả Microsoft sử dụng RTF cho một ví dụ về dán một bảng trong [HERE] (http://support.microsoft.com/kb/216676). – Hossein