2010-04-30 41 views
9

Tôi đang tạo một trình chỉnh sửa bản đồ rất cơ bản. Tôi đang nửa chừng nó và một vấn đề tôi nhấn là làm thế nào để xóa một đối tượng.Làm cách nào để tôi có thể chọn một picturebox?

Tôi muốn nhấn xóa nhưng dường như không có sự kiện keydown cho pictureboxes và nó sẽ có vẻ như tôi sẽ có nó chỉ trên hộp danh sách của tôi.

Giải pháp tốt nhất để xóa đối tượng trong trình chỉnh sửa của tôi là gì?

+0

bằng ngôn ngữ phù thủy, muốn bạn làm điều đó? – Werewolve

+0

@were: Tôi nghĩ bạn có thể giả sử C# hoặc VB.NET. Các cựu có vẻ là phổ biến hơn. Tuy nhiên, bản dịch * mã * phải là vấn đề nhỏ nhất. – Joey

+0

C# và tôi có thể đọc vb tốt. Có lẽ tôi sẽ xem xét kéo đối tượng offscreen một giải pháp xóa. Để xấu tôi đã không nghĩ về nó ngay lập tức. –

Trả lời

17

Bạn sẽ muốn PictureBox để tham gia vào trật tự tabbing và cho thấy rằng nó có trọng tâm. Phải mất một chút phẫu thuật nhỏ. Thêm một lớp mới vào dự án của bạn và dán mã được hiển thị bên dưới. Biên dịch. Thả điều khiển mới từ đầu hộp công cụ lên biểu mẫu của bạn. Triển khai sự kiện KeyDown.

using System; 
using System.Drawing; 
using System.Windows.Forms; 

class SelectablePictureBox : PictureBox { 
    public SelectablePictureBox() { 
    this.SetStyle(ControlStyles.Selectable, true); 
    this.TabStop = true; 
    } 
    protected override void OnMouseDown(MouseEventArgs e) { 
    this.Focus(); 
    base.OnMouseDown(e); 
    } 
    protected override void OnEnter(EventArgs e) { 
    this.Invalidate(); 
    base.OnEnter(e); 
    } 
    protected override void OnLeave(EventArgs e) { 
    this.Invalidate(); 
    base.OnLeave(e); 
    } 
    protected override void OnPaint(PaintEventArgs pe) { 
    base.OnPaint(pe); 
    if (this.Focused) { 
     var rc = this.ClientRectangle; 
     rc.Inflate(-2, -2); 
     ControlPaint.DrawFocusRectangle(pe.Graphics, rc); 
    } 
    } 
} 
+0

Cảm ơn, nó hoạt động độc đáo: D –

+0

@Hans Passant- nó thực sự tham gia vào thứ tự tabbing trên một hình thức cửa sổ? Bởi vì, nó không nhận được tiêu điểm khi TAB được nhấn từ điều khiển trước đó hoặc CTRL + TAB được nhấn từ điều khiển tiếp theo. Quan niệm của bạn về nó là gì? Trân trọng. – priyamtheone

+0

Vâng, đó là điểm của mã này. Tôi chỉ kiểm tra lại lần nữa, các tab như một người mẹ. Đừng quên thực sự * thay thế * hộp hình ảnh bằng điều khiển mới này. –

1

tôi nghĩ rằng đây là tole tốt nhất:

http://felix.pastebin.com/Q0YbMt22

+0

tôi thấy nơi bạn đi với điều đó. –

+0

Bạn có thể sử dụng cùng một hiệu ứng trong phương thức ủy quyền trong trình xử lý sự kiện Click của PictureBox. –

Các vấn đề liên quan