Tôi cần phải "sửa đổi" tất cả dán vào TextBox văn bản được hiển thị trong một số cách có cấu trúc. Tôi có thể làm điều đó với kéo-n-thả, ctrl-v, nhưng làm thế nào để làm điều đó với menu ngữ cảnh mặc định "Dán"?móc trên mặc định "Dán" sự kiện của WinForms TextBox kiểm soát
7
A
Trả lời
16
Trong khi tôi sẽ thường không đề nghị giảm xuống mức thấp Windows API, và điều này có thể không phải là cách duy nhất để làm điều này, nó làm các trick:
using System;
using System.Windows.Forms;
public class ClipboardEventArgs : EventArgs
{
public string ClipboardText { get; set; }
public ClipboardEventArgs(string clipboardText)
{
ClipboardText = clipboardText;
}
}
class MyTextBox : TextBox
{
public event EventHandler<ClipboardEventArgs> Pasted;
private const int WM_PASTE = 0x0302;
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_PASTE)
{
var evt = Pasted;
if (evt != null)
{
evt(this, new ClipboardEventArgs(Clipboard.GetText()));
// don't let the base control handle the event again
return;
}
}
base.WndProc(ref m);
}
}
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
var tb = new MyTextBox();
tb.Pasted += (sender, args) => MessageBox.Show("Pasted: " + args.ClipboardText);
var form = new Form();
form.Controls.Add(tb);
Application.Run(form);
}
}
Cuối cùng bộ công cụ WinForms không phải là rất tốt . Nó là một wrapper mỏng-ish xung quanh Win32 và Common Controls. Nó cho thấy 80% API hữu ích nhất. 20% còn lại thường bị thiếu hoặc không bị phơi bày theo cách hiển nhiên. Tôi sẽ đề nghị di chuyển ra khỏi WinForms và WPF nếu có thể như WPF có vẻ là một khuôn khổ kiến trúc tốt hơn cho NET GUI.
Các vấn đề liên quan
- 1. Sự kiện WinForms cho tiêu điểm TextBox?
- 2. sự kiện dán android
- 3. Sự kiện kiểm soát người dùng
- 4. Thêm sự kiện Tải cho Winforms Kiểm soát giống như lớp Biểu mẫu
- 5. UITextFieldDelegate và sự kiện kiểm soát UITextField
- 6. Custom Caret cho WinForms TextBox
- 7. Kiểm soát xem để xác định các sự kiện đang được kích hoạt?
- 8. ASP.NET TextBox Sự kiện LostFocus
- 9. Hủy kiểm soát dữ liệu kiểm soát sự kiện không ngăn chặn cố gắng cập nhật nguồn dữ liệu
- 10. Winforms DataBind đến Thuộc tính hiển thị của Kiểm soát
- 11. Mục đích của Winforms kiểm soát thẻ là gì?
- 12. Kiểm tra nếu kiểm soát là Textbox trong TabControl
- 13. Làm thế nào để chấm mở rộng WinForms kiểm soát trên ToolBox
- 14. Cách đọc tệp trên sự kiện dán trong HTML5
- 15. Winforms, databinding, Listbox và textbox
- 16. C khối # Trình duyệt web kiểm soát của cha mẹ tải sự kiện
- 17. Vòng đời sự kiện WinForms
- 18. Cách lấy giá trị của trường trong sự kiện dán?
- 19. Kích hoạt hành động mặc định của sự kiện
- 20. Sự kiện "KeyPress" cho hộp văn bản WinForms bị thiếu?
- 21. riêng WinForms kiểm soát thấp thoáng và Có Bad Performance
- 22. Cách ngăn chặn sự kiện đó trong trình kích hoạt kiểm soát khi biểu mẫu đóng
- 23. Selenium RC và các sự kiện kiểm soát đầu vào
- 24. Cho phép kiểm soát-c và kiểm soát-v sao chép và dán trong Emacs
- 25. kiểm soát flowlayout giữ thêm kiểm soát theo hướng sai trong winforms
- 26. kích hoạt sự kiện "dán" trong Javascript
- 27. Cách tắt hành vi sơn mặc định của sự kiện cuộn bánh xe trên JScrollPane
- 28. Tại sao Dán Sự kiện trong đám cháy jquery khi dán trước?
- 29. Chụp sự kiện thoát ứng dụng - WinForms
- 30. Thiết kế Thời gian xem cho các sự kiện Kiểm soát người dùng
cảm ơn, tôi vừa mới học được sth mới (không chỉ cách bắt "dán", mà còn thiếu một số từ doin) – David
từ khóa sự kiện bị thiếu trên khai báo trường đã dán và tại sao bạn sử dụng biến cục bộ evt? – Maxence
@Maxence, FTFY. – dahvyd