2012-11-05 13 views
5

मैं एक बटन और दो लेबलकिसी अन्य वर्ग से Winform घटकों तक कैसे पहुंचे?

साथ एक रूप है और मैं MyCounter

कहा जाता है मैं चाहता हूँ MyCounter वर्ग एक विधि changeColor कहा जाता है के माध्यम से फार्म में लेबल का उपयोग करने में सक्षम होना एक अलग वर्ग है। ।

कैसे इस वर्ग

रूप में लेबल उपलब्ध करा सकते हैं

public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     public Color colTurn 
     { 
      get { return lblp1Turn.BackColor; } 
      set { lblp1Turn.BackColor = value; } 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 

     } 
    } 

वर्ग

class myCounter 
{ 
    private readonly Form1 Board; 
    public myCounter(Form1 Board) 
    { 
     this.Board = Board; 
    } 

    public int turn = 0; 


    public void changeColor() 
    { 

     if (turn == 0) 
     { 
      turn = 1; 
      lbl 

      //change color code here 
     } 
    } 
} 
+0

मैंने – Tacit

+0

प्राप्त करने और सेट करने का प्रयास किया है क्या आपने अपना कोड डाला है? – Frederiek

+0

क्या आपने अपनी दूसरी कक्षा में वस्तुओं को पारित करने का प्रयास किया है? – EJC

उत्तर

4

तो ऐसा लगता है कि तुम वैसे भी अपने द्वितीय श्रेणी में पूरे फॉर्म से गुजर रहे हैं, तो मैं क्या LightStriker सुझाव कर चाहते हैं। अपने सभी आइटमों के लिए सार्वजनिक एक्सेसर बनाएं और फिर इसे अपनी दूसरी कक्षा में सेट करें।

public partial class Form1 : Form 
    { 
     private myCounter _counterClass; 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     public Label MyLabel1 
     { 
      get {return mylabel1;} 
     } 

     public Label MyLabel2 
     { 
      get {return mylabel2;} 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      _counterClass = new myCounter(this); 
     } 

     protected void ButtonClick(object sender, EventArgs e) 
     { 
      _counterClass.changeColor(); 
     } 
    } 

फिर आपकी दूसरी कक्षा में आपके पास अपने लेबल तक पहुंच है।

class myCounter 
{ 
    private readonly Form1 Board; 
    public myCounter(Form1 Board) 
    { 
     this.Board = Board; 
    } 

    public int turn = 0; 


    public void changeColor() 
    { 

     if (turn == 0) 
     { 
      turn = 1; 
      Board.MyLabel1.BackColor = Color.Red; 
      Board.MyLabel2.BackColor = Color.White; 
     } 
     else 
     { 
      turn = 0; 
      Board.MyLabel2.BackColor = Color.Yellow; 
      Board.MyLabel1.BackColor = Color.White; 
     } 
    } 
} 

ध्यान रखें कि यह कोड है जिसे मैंने विकी मार्कअप संपादक में लिखा है और यह अनचाहे है। हालांकि यह आपके लिए काम करना चाहिए।

+0

क्या मिलता है मैं डॉट्स – Tacit

+0

के बाद क्या डाल सकता हूं जो भी आप बदलना चाहते हैं। आप बैककोलर को सही बदलना चाहते हैं? – EJC

+0

क्या आप मुझे बता सकते हैं कि परिवर्तन कॉलर विधि क्या कह रहा है? – EJC

3

इस के लिए अपने फार्म पर एक सार्वजनिक विधि बनाएँ।

public partial class Form1 : Form{ 
    public void SetLabelColor(Color color){ 
     mylabel.BackColor = color; 
    } 
    //... Other code 
} 
+0

तो मैं कक्षा – Tacit

+0

में लेबल कैसे उपलब्ध करा सकता हूं और आप आंशिक वर्ग – Tacit

+0

@Tacit का उपयोग क्यों कर रहे हैं: यह सिर्फ * आपके * कोड से कॉपी किया गया है। आंशिक वर्ग इसलिए है क्योंकि यह एक रूप है, और आप कोड-पीछे सीएस फ़ाइल के साथ एक .designer.cs फ़ाइल का उपयोग कर रहे हैं। – Patrick

संबंधित मुद्दे