2011-09-26 15 views
26

के लिए कोई अधिभार नहीं है क्योंकि मैं सी # के लिए बिल्कुल नया हूं, मैं कोड के निम्नलिखित भाग के साथ संघर्ष करता हूं। जब मैं बटन 'knop' पर क्लिक करता हूं, तो विधि 'klik' को निष्पादित किया जाना चाहिए। इस विधि को फॉर्म पर 'ड्रामैंडेल' द्वारा उत्पन्न बिटमैप 'बी' को आकर्षित करना है। लेकिन मुझे लगातार मैचों के प्रतिनिधि 'system.eventhandler' के लिए 'ओवरलोड नहीं' त्रुटि मिलती है।मैचों के प्रतिनिधि 'system.eventhandler'

using System; 
using System.Windows.Forms; 
using System.Drawing; 

class Mandelbrot : Form 
{ 
    public Bitmap b; 
    public Mandelbrot() 
    { 
     Button knop; 
     knop = new Button();   
     knop.Location = new Point(370, 15);   
     knop.Size = new Size(50, 30); 
     knop.Text = "OK";   

     this.Text = "Mandelbrot 1.0"; 
     this.ClientSize = new Size(800, 800); 
     knop.Click += this.klik; 
     this.Controls.Add(knop);   


    } 
    public void klik(PaintEventArgs pea, EventArgs e) { 
     Bitmap c = this.DrawMandel(); 
     Graphics gr = pea.Graphics; 
     gr.DrawImage(b, 150, 200); 
    } 
    public Bitmap DrawMandel() 
    { 
     //function that creates the bitmap 
     return b; 
    } 
    static void Main() { 
     Application.Run(new Mandelbrot()); 
    } 

} 
+3

ईवेंट हैंडलर प्रतिनिधियों एक 'वस्तु प्रेषक, EventArgs तर्क सूची e'। आपका नहीं है और रिकॉर्ड के लिए मुझे संदेह है कि 'क्लिक' ईवेंट में 'पेंटएवेंट आर्ट्स' होगा। – BoltClock

+1

ऐसा लगता है कि आपने एक ऑनपेंट() विधि का नाम बदलकर क्लिक कर दिया है और फिर इसे बटन ईवेंट हैंडलर पर तार करने का प्रयास किया है। + = Klik असाइनमेंट को हटाएं, और फॉर्म डिज़ाइनर से, बटन पर डबल क्लिक करें और यह एक नया बटन हैंडलर बनाएगा। – StuartLC

+0

यह परीक्षण और त्रुटि प्रोग्रामिंग है। बहुत अधिक त्रुटि होगी, आप केवल बिटमैप नहीं खींच सकते हैं और उम्मीद करते हैं कि यह जीवित रहेगा। अपनी स्थानीय लाइब्रेरी पर जाएं और एक विनफॉर्म प्रोग्रामिंग पुस्तक देखें। –

उत्तर

46

आप public void klik(object sender, System.EventArgs e) को public void klik(PaintEventArgs pea, EventArgs e) बदलने के लिए मानकों PaintEventArgs pea, EventArgs e के साथ कोई Click ईवेंट हैंडलर है क्योंकि वहाँ की जरूरत है। पहले तर्क एक वस्तु प्रकार होना चाहिए और दूसरा EventArgs होना चाहिए -

+0

तब 'मटर' चर के साथ क्या होने जा रहा है? – Willem

+0

मटर इस संदर्भ में उपलब्ध नहीं होगा यानी घटना पर क्लिक करें –

4

आप बटन क्लिक हैंडलर रैप करने के लिए पैटर्न

public void klik(object sender, EventArgs e) 
6

हाँ वहाँ क्लिक करें ईवेंट हैंडलर (क्लिक करें) के साथ एक समस्या है मैच के लिए की जरूरत है।

public void klik(object sender, EventArgs e) { 
    // 
} 

आप एक रूप या नियंत्रण पर पेंट करना चाहते हैं तो CreateGraphics विधि का उपयोग करें।

public void klik(object sender, EventArgs e) { 
    Bitmap c = this.DrawMandel(); 
    Graphics gr = CreateGraphics(); // Graphics gr=(sender as Button).CreateGraphics(); 
    gr.DrawImage(b, 150, 200); 
} 
2

बदलें क्लिक करें विधि इस प्रकार है:

public void klik(object pea, EventArgs e) 
{ 
    Bitmap c = this.DrawMandel(); 
    Button btn = pea as Button; 
    Graphics gr = btn.CreateGraphics(); 
    gr.DrawImage(b, 150, 200); 
} 
संबंधित मुद्दे