2016-11-23 60 views
0

我試圖創建一個組合框,繪製一個線條兩點,我創建了一個方法,我使用兩個事件Dragenter和Dragover,但生成一個錯誤:windowsforms C#控制 - 在執行時間移動和調整控件的大小

CS7036沒有給定的參數對應於所要求的形式參數「發送方」「Form1.DrawLine(對象,PaintEventArgs的)」

當我嘗試在最終的調用方法的DrawLine()出現這種錯誤事件DragOver:

有人幫助我嗎?該代碼是在這裏:

private void DrawLine(object sender, PaintEventArgs e) 
    { 
     Pen pen = new Pen(Color.FromArgb(255, 0, 0, 255), 8); 
     pen.StartCap = LineCap.ArrowAnchor; 
     pen.EndCap = LineCap.RoundAnchor; 
     e.Graphics.DrawLine(pen, StPoint, EnPoint); 
     //groupBox1.Refresh(); 
    } 

    private void groupBox1_DragEnter(object sender, DragEventArgs e) 
    { 
     StPoint = new Point(e.X, e.Y); 

    } 

    private void groupBox1_DragOver(object sender, DragEventArgs e) 
    { 
     EnPoint = new Point(e.X, e.Y); 

     this.DrawLine(); 
    } 

回答

0

好給你的錯誤,

CS7036 There is no argument given that corresponds to the required formal parameter 'sender' of 'Form1.DrawLine(object, PaintEventArgs)'

它看起來像你忘了來傳遞參數給DrawLine呼叫您的groupBox1_DragOver方法。

你看,DrawLine方法聲明的兩個參數是:objectsenderPaintEventArgse

private void DrawLine(object sender, PaintEventArgs e) 

您需要填寫調用方法的地方。

然而,如果這種方法甚至應該有這些參數,因爲它無法使用它們,並且重複使用它是一種負擔,這是值得懷疑的。將主體提取爲無參數方法或使用lambda綁定到事件並忽略參數(例如OnSomeEvent += (s, a) => DrawLine())。

+0

謝謝!我忘了排除參數,因爲我使用了MSDN代碼來創建這種方法,但是你能幫我解決這個問題嗎? 我刪除了參數,我的代碼繼續顯示相同的錯誤。 –

+0

謝謝,我解釋了你的解釋! –