Хранение ссылки в c#

Нажать событие текстового поля? Или даже событие MouseCaptureChanged работает на меня. - Хорошо. не работает.

, Таким образом, необходимо сделать 2 вещи:

private bool f = false;

private void textBox_MouseClick(object sender, MouseEventArgs e)
{ 
  if (this.f) { this.textBox.SelectAll(); }
  this.f = false;
}

private void textBox_Enter(object sender, EventArgs e)
{
  this.f = true;
  this.textBox.SelectAll();
}
private void textBox_MouseMove(object sender, MouseEventArgs e) // idea from the other answer
{
  this.f = false; 
}

Работы для переключения вкладок (через текстовые поля к одному) также - звонят, SelectAll () во Входят на всякий случай...

6
задан Adam Naylor 8 December 2009 в 11:34
поделиться

3 ответа

В принципе, вы не можете этого сделать. ссылка применима только внутри самого метода, по сути.

Совершенно не ясно, для чего вы хотите это использовать - не могли бы вы предоставить нам дополнительную информацию, чтобы мы могли предложить альтернативные конструкции? Честно говоря, все, что полагается на финализатор, вызывает затруднения ...

7
ответ дан 9 December 2019 в 20:44
поделиться

Это не сработает, потому что ref аспект параметра конструктора применяется только внутри конструктора.

Что бы я сделал, так это предоставить конструктору делегат, который можно использовать для обновления рассматриваемого объекта. Кроме того, для этого следует использовать IDisposable (вместе с блоком using ), а не финализатор; финализаторы не должны касаться управляемых объектов (они предназначены для освобождения неуправляемых объектов).

class Updater : IDisposable
{
    Action<object> setter;

    public Updater(Action<object> setter)
    {
        this.setter = setter;
    }

    public Dispose()
    {
        setter(new object());
    }
}
4
ответ дан 9 December 2019 в 20:44
поделиться

Имейте в виду, что использование такого финализатора не то же самое, что деструктор в C ++.

Когда последняя ссылка умирает (возможно, она выходит за пределы области видимости), объект попадает в очередь Finalizer. Сборщик мусора определяет, когда вызывать финализатор, и может пройти много времени после смерти последней ссылки.

1
ответ дан 9 December 2019 в 20:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: