2008-08-12 49 views
20

Chúng tôi đang tìm kiếm một trình điều khiển trình soạn thảo WYSIWYG cho ứng dụng cửa sổ của chúng tôi (vb.net hoặc C#) để người dùng có thể thiết kế email HTML (gửi bằng cách sử dụng các đối tượng SMTP trong khung net dot) trước khi gửi.Trình soạn thảo email HTML trong ứng dụng Windows Forms

Hiện nay tất cả các biên tập viên có sẵn, chúng tôi có thể tìm thấy có một trong các vấn đề sau:

a) Họ dựa vào mshtml.dll hoặc điều khiển trình duyệt web mà như đã được chứng minh cho chúng ta trở nên không đáng tin cậy như mã html và biên tập viên có được ra khỏi đồng bộ dưới cửa sổ 2000 (IE6)

b) Chúng được dựa trên web không phải là một hình thức kiểm soát cửa sổ

c) Họ đặt phong cách trong đầu của tài liệu (xem lưu ý dưới đây).

Thật không may vì cách này HTML email article giải thích cách duy nhất để làm cho email HTML hoạt động với kiểu là sử dụng nội tuyến mà giờ đây dường như không được hỗ trợ trong nhiều trình chỉnh sửa.

Có ai có kinh nghiệm nào trong lĩnh vực này hoặc có thể đề xuất giải pháp không?

Trả lời

2

Tôi cũng cần một trình soạn thảo WYSIWYG cho dự án Windows Forms mà tôi đang làm việc. Tôi đã viết về các mục mà tôi đã tìm thấy here. Cuối cùng, tôi đã kết thúc bằng cách sử dụng một cái gì đó mà tôi tìm thấy trên CodeProject: A Windows Forms based text editor with HTML output. Điều này vi phạm (a) ở trên mà nó sử dụng điều khiển WebBrowser. Tuy nhiên, tôi không thể tìm thấy bất cứ điều gì tốt mà không làm điều này (nếu bạn không sử dụng WebBrowser theo cách nào đó, thì về cơ bản bạn phải tự phân tích cú pháp HTML và trình kết xuất của bạn để xử lý "Cái gì-Bạn- Xem "một phần của WYSIWYG). Điều tốt về điều khiển này là nguồn có thể dễ dàng tùy chỉnh, vì vậy bạn có thể lấy đi và thêm các tùy chọn định dạng khi cần (và nếu bạn muốn các kiểu đều ở trong dòng, bạn cũng có thể làm điều này).

3

Tôi đã sử dụng this one, thấp hơn một chút so với WebBrowser, nhưng vẫn sử dụng MSHTML, điều này tạo ra một số HTML xấu xí. Vì mục đích của tôi, tôi đang thực hiện một trình soạn thảo nhiều tab với chế độ soạn thảo WYSIWYG và HTML (sử dụng ICSharp.TextEditor) với lớp đệm để cập nhật bất cứ khi nào các tab thay đổi. Là một phần của lớp đệm đó, tôi thực sự là run the HTML through HTML Tidy và một vài bit thay thế để có được XHTML hợp lệ.

Tôi chỉ cung cấp giải pháp đó vì tôi cũng không tìm được giải pháp không có nguồn gốc từ MSHTML theo cách nào đó và cuối cùng chỉ tiếp tục giải pháp trên để tiếp tục tiến lên.

0

Mã nguồn của nikhil cung cấp giải pháp tốt. Tôi đã tải xuống thành phần nhỏ này đôi khi trở lại, tôi nghĩ rằng nó sử dụng MSHTML. Nhưng tôi không chắc chắn về điều đó. Nguồn có thể tải xuống here. Hãy cho tôi biết nếu nó giúp :)

0

Bạn đã không đề cập đến nếu bạn sẵn sàng trả tiền cho một kiểm soát, nhưng nếu bạn là tôi khuyên bạn nên Actipro SyntaxEditor.

1

Thay vì tìm kiếm trình chỉnh sửa HTML, hãy xem xét tùy chọn của trình chỉnh sửa RichText (có thể dễ dàng hơn để tạo) và sau đó chuyển văn bản cuối cùng thành tài liệu HTML.

Miễn là bạn được yêu cầu sử dụng một tập hợp tối thiểu các tính năng (in đậm/in nghiêng vv) cả việc tạo trình chỉnh sửa RT và chuyển đổi tài liệu cuối cùng thành định dạng HTML không khó.

Nếu, mặt khác, bạn cần sử dụng nhiều tính năng hơn (chẳng hạn như bảng), bạn cần nghiên cứu Rich Text Format và triển khai các tính năng bạn cần.

Tài nguyên bổ sung:

+0

Đây là những gì chúng tôi đã kết thúc làm, chuyển đổi sử dụng các từ Aspose. – John

2

HTML Edit Control for .NET này (tiết lộ: Tôi đã viết nó).

Nó không dựa trên bất kỳ trình duyệt web nào; đó là điều khiển biểu mẫu Windows; và, nó có thể đối phó với thuộc tính style=.

Không chính xác những gì bạn muốn: vì nó được thiết kế cho WYSIWYM, thanh công cụ không có nút để chỉnh sửa kiểu nội tuyến (mặc dù công cụ hiển thị của nó sẽ hiển thị kiểu nội tuyến), thanh công cụ cho phép bạn chỉ định các phần tử cấp khối như <p><h1><ul><table>; nhưng nếu bạn muốn, bạn có thể hỏi tôi về cách thêm chức năng (như được mô tả trong phần Developing New Functionality).

+0

Hoặc thay vì cần tôi triển khai chức năng mới, bạn không thể hiển thị thanh công cụ tích hợp của mình và triển khai/hiển thị thay vì sử dụng thanh công cụ mới và API hiện tại của tôi để chỉnh sửa tài liệu và điều khiển HTML hiện tại của tôi để hiển thị/hiển thị tài liệu được chỉnh sửa trong thời gian thực. – ChrisW

2

Bạn có thể thử .NET Win HTML kiểm soát Editor từ SpiceLogic,

https://www.spicelogic.com/Products/NET-Win-HTML-Editor-Control-8

thành phần của họ có thể nhúng tất cả hình ảnh địa phương và trở NET đối tượng MailMessage mà là rất có ích cho việc phát triển ứng dụng email.

0

Đó là đóng góp đầu tiên của tôi.

Bạn có thể sử dụng RichTextBox. Định dạng RTF là quá đủ để tạo email.

Gần đây tôi đã viết về cách tải và lưu vào đĩa cứng, nội dung của RichTextBox.

Cho phép sao chép và dán. Nó đơn giản để sử dụng và với vài nút, bạn có thể tạo các lệnh của riêng bạn.

With RichTextBox1 
    .SelStart = 0 
    .SelLength = Len (. Text) 
    .SelColor = vbRed 
End With 

Ví dụ về tải và lưu.

http://danielcatala.wordpress.com/2014/01/30/como-cargar-y-guardar-archivos-richtext-con-wpf/

Private Sub btnCarga(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click 

    Dim archivoCarga As New StreamReader("prueba.rtf") 
    With RichTextBox1 
     .Selection.Select(.Document.ContentStart, RichTextBox1.Document.ContentEnd) 
     .Selection.Load(archivoCarga.BaseStream, System.Windows.DataFormats.Rtf) 
    End With 
End Sub 

Private Sub btnGuarda(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button2.Click 

    Dim archivoSalida As New StreamWriter("prueba.rtf") 
    Dim bs As Stream = archivoSalida.BaseStream 

    With RichTextBox1 
     .Selection.Select(RichTextBox1.Document.ContentStart,  RichTextBox1.Document.ContentEnd) 
     .Selection.Save(bs, System.Windows.DataFormats.Rtf) 
    End With 
End Sub 
Các vấn đề liên quan