2017-02-03 1 views
0

моего кода для клети прямоугольника:Как создать событие мыши на прямоугольнике [X] после того, как создать прямоугольник [X]

 Rectangle[] myRectangle = new Rectangle[100]; 
    for(int i=1;i<=100;i++) 
    { 
      myRectangle[i] = new Rectangle(); 
      // another code for create myRectangle[i] 
    } 

Когда MouseEnter Rectangle [X], и я хочу сделать something.What я буду делать? Спасибо.

+0

Во-первых, ваша петля вызовет исключение. Нет элемента 100, но вы пытаетесь получить к нему доступ. Измените цикл, чтобы начать с 0 и выполняйте пока <100, или используйте foreach. Что касается события, вы должны иметь возможность подключиться к событию OnMouseEnter. Я еще не проверил. – bixarrio

+1

'myRectangle [i] .MouseEnter + = <ваш обработчик событий>'. – Clemens

+0

Я использую прямоугольник [i] .RaiseEvent (новый RoutedEventArgs (MouseEnterEvent)); для создания MouseEnterEvent, но я не знаю, где я могу создать канал для MouseEnter на прямоугольнике [x], потому что мое значение x (1-100) имеет разностный код при MouseEnter. –

ответ

0

Положить сюда;

Rectangle[] myRectangle = new Rectangle[100]; 
for(int i = 0; i < 100; i++) 
{ 
    myRectangle[i] = new Rectangle(); 
    myRectangle[i].Tag = i; 
    myRectangle[i].MouseEnter += MouseEnter; 
} 
private void MouseEnter(object sender, MouseEventArgs e) 
{ 
    Rectangle rect = (Rectangle)sender; 
    int idx = (int)rect.Tag; 
    MessageBox.Show(idx.ToString()); 
} 
+0

Я бы предложил заменить первые две строки метода обработчика на 'var rect = (Rectangle) sender;' потому что если отправитель - по какой бы то ни было причине - не был бы прямоугольником, вы бы правильно получили исключение InvalidCastException вместо того, чтобы молча игнорировать его. – Clemens

+0

Это работа. Большое спасибо!! –

+0

@Clemens В этом случае я хотел проигнорировать исключение, но вы абсолютно правы. Я обновлю ответ – bixarrio