0
所以我有2種類型的對象放置在我的畫布上:矩形和文本框。 我的問題是如下:我需要刪除與Mousedown矩形和文本框像橡皮擦。如果我只在屏幕上放置矩形,我只能移除一個矩形,如果只在屏幕上放置文本框,我只能移除文本框。但我需要用Mousedown
(鼠標)刪除我的兩個屏幕上,以便爲例如:我的屏幕上,他們是2個矩形和1 textbox
,我點擊它們,並得到了遵循錯誤: 無法轉換的對象鍵入System.Windows.Controls.TextBox到一個System.Windows.Shapes.Rectangle類型用鼠標從畫布中刪除2種不同的對象類型
我知道這是一個鑄造問題,但我嘗試了很多東西。
這是我的時刻代碼:
class Eraser
{
private Label status;
private List<Rectangle> kaders;
private List<TextBox> textboxen;
private Canvas window;
public Eraser(Canvas win, Label status)
{
this.status = status;
this.window = win;
//Application.Current.MainWindow.Cursor = new Cursor(AppDomain.CurrentDomain.BaseDirectory + @"../../Icons/eraser.cur");
//Mouse.OverrideCursor = newCursor;
//Mouse.OverrideCursor = Application.Current.MainWindow.Cursor;
textboxen = new List<TextBox>();
kaders = new List<Rectangle>();
foreach (Object element in win.Children)
{
if (element is Rectangle)
{
Mouse.RemoveMouseDownHandler(window, item_Mousedown);
verzamelKaders();
}
else if (element is TextBox)
{
Mouse.RemoveMouseDownHandler(window, Element_Mousedown);
verzamelTextboxen();
}
}
}
private void verzamelKaders()
{
Mouse.RemoveMouseDownHandler(window, item_Mousedown);
foreach (Rectangle element in window.Children)
{
if (element.GetType() == typeof(Rectangle))
{
Mouse.RemoveMouseDownHandler(window, item_Mousedown);
kaders.Add(element);
element.MouseDown += new MouseButtonEventHandler(Element_Mousedown);
}
else
{
element.MouseDown += new MouseButtonEventHandler(item_Mousedown);
}
}
}
private void verzamelTextboxen()
{
Mouse.RemoveMouseDownHandler(window, Element_Mousedown);
foreach (TextBox item in window.Children)
{
if (item.GetType() == typeof(TextBox))
{
Mouse.RemoveMouseDownHandler(window, Element_Mousedown);
textboxen.Add(item);
item.PreviewMouseDown += new MouseButtonEventHandler(item_Mousedown);
}
else
{
item.MouseDown += new MouseButtonEventHandler(Element_Mousedown);
}
}
}
private void Element_Mousedown(object sender, MouseButtonEventArgs e)
{
Mouse.RemoveMouseDownHandler(window, item_Mousedown);
Rectangle removekader = new Rectangle();
removekader = (Rectangle)sender;
window.Children.Remove(removekader);
}
private void item_Mousedown(object sender, MouseButtonEventArgs e)
{
Mouse.RemoveMouseDownHandler(window, Element_Mousedown);
TextBox removeTextbox = new TextBox();
removeTextbox = (TextBox)sender;
window.Children.Remove(removeTextbox);
}
}
非常感謝您!我知道這對我來說變得複雜了。只是一件事,這段代碼很乾淨,Ty! – 2013-03-03 11:30:23