увеличить ширину пера с помощью значения трекбара

Как сказано в заголовке, я пытаюсь увеличить ширину пера с помощью трекбара. Это то, что я написал до сих пор:

public partial class Form26_10 : Form
    {
        float scrollValue = 0F;

        Pen CustomPen = new Pen(Color.Black, scrollValue);//ERROR<-

        public Form26_10()
        {
            InitializeComponent();

        }

     private void trackBar1_Scroll(object sender, EventArgs e)
    {
        scrollValue = trackBar1.Value;
    }

}

по сути, я должен иметь возможность объявить значение в памяти, а затем указать его в параметре ширины пера, и поэтому при изменении значения трекбара изменяется ширина пера. Хотя я получаю эту ошибку:

a field initializer cannot reference the non-static field, method or property of 'Form.scrollValue' 

person Dice    schedule 26.10.2017    source источник
comment
Это просто неправильный подход. Всегда создавайте объект Pen только тогда, когда он вам нужен. С оператором использования. В этот момент вы можете использовать trackBar1.Value в его конструкторе, и он будет иметь соответствующее значение. Все, что должен сделать trackBar1_Scroll, — это вызвать Invalidate(), чтобы любой код, использующий перо, запустился снова.   -  person Hans Passant    schedule 26.10.2017


Ответы (1)


public partial class Form26_10 : Form
{
    private Pen CustomPen;

    public Form26_10()
    {
        InitializeComponent();
        CustomPen = new Pen(Color.Black, scrollValue);
    }

    private void trackBar1_Scroll(object sender, EventArgs e)
    {
        CustomPen.Width = trackBar1.Value;
    }
}

Вы не должны инициализировать поля класса при объявлении, если у вас есть изменяющееся значение. Кроме того, float имеет значение по умолчанию 0.0F, поэтому вам не нужно его инициализировать. Я удалил его в этом примере, потому что предположил, что он вам не понадобится. Если вы все еще планируете использовать его, вы можете просто добавить его вверху.

float scrollValue;
person Lucax    schedule 26.10.2017