Нажать событие текстового поля? Или даже событие 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 () во Входят на всякий случай...
В принципе, вы не можете этого сделать. ссылка
применима только внутри самого метода, по сути.
Совершенно не ясно, для чего вы хотите это использовать - не могли бы вы предоставить нам дополнительную информацию, чтобы мы могли предложить альтернативные конструкции? Честно говоря, все, что полагается на финализатор, вызывает затруднения ...
Это не сработает, потому что ref
аспект параметра конструктора применяется только внутри конструктора.
Что бы я сделал, так это предоставить конструктору делегат, который можно использовать для обновления рассматриваемого объекта. Кроме того, для этого следует использовать IDisposable
(вместе с блоком using
), а не финализатор; финализаторы не должны касаться управляемых объектов (они предназначены для освобождения неуправляемых объектов).
class Updater : IDisposable
{
Action<object> setter;
public Updater(Action<object> setter)
{
this.setter = setter;
}
public Dispose()
{
setter(new object());
}
}
Имейте в виду, что использование такого финализатора не то же самое, что деструктор в C ++.
Когда последняя ссылка умирает (возможно, она выходит за пределы области видимости), объект попадает в очередь Finalizer. Сборщик мусора определяет, когда вызывать финализатор, и может пройти много времени после смерти последней ссылки.