2017-10-26 5 views
0

タイトルで言われているように、私はトラックバーを使ってペンの幅のサイズを大きくしようとしています。 これは私がこれまでに書かれたものです:ペンの幅をトラックバーの値で大きくする

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' 
+0

これは間違ったアプローチです。必要なときにペンオブジェクトを作成するだけです。 usingステートメント。この時点で、コンストラクタでtrackBar1.Valueを使用することができ、適切な値を持ちます。 trackBar1_Scrollが行う必要があるのは、Invalidate()を呼び出して、ペンを使用しているコードがすべて再実行されるようにすることだけです。 –

答えて

0
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; 
関連する問題