कैसे बदलने के लिए गतिशील रूप से बनाया लेबल के पाठ पर गतिशील रूप से बनाई गई बटन पर क्लिक करें में C# Windows प्रपत्र अनुप्रयोग

0

सवाल

मैं कोशिश कर रहा हूँ कुछ पैदा करने के लिए लेबल और गतिशील बटन. मैं चाहता हूँ बदलने के लिए, लेबल के नाम पर गतिशील रूप से crated बटन पर क्लिक करें. जब मैं लिख रहा हूँ के button_click विधि, मैं उपयोग नहीं कर सकते हैं लेबल वस्तु सीधे. मैं कैसे कर सकते हैं कि?

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace DemoPanel
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            int lblYVal = 10;
            int btnYVal = 50;

            for(int i = 1; i< 5; i++)
            {
                Label lbl = new Label();
                lbl.Text = "test";
                lbl.Name = "test"+i.ToString();
                lbl.Location = new System.Drawing.Point(10, lblYVal);
                lbl.Visible = true;

                Button btn = new Button();
                btn.Text = "Click";
                btn.Name = "textBtn" + i.ToString();
                btn.Location = new System.Drawing.Point(10,btnYVal);
                btn.Visible = true;

                btn.Click += new EventHandler(this.btn_click);


                this.Controls.Add(lbl);
                this.Controls.Add(btn);
                lblYVal += 70;
                btnYVal += 70;
                

            }

        }

        void btn_click(object sender, EventArgs e)
        {
            //How can i change label text from here.
            //lbl.text //Does Not exist Error.
            Label lbl = new Label();
            lbl.Text = "New text"; //Not changing Label text
        }
    }
}
c# desktop-application
2021-11-22 06:03:37
2

सबसे अच्छा जवाब

1

के for पाश लिखा है आप के बारे में जानता है बटन और लेबल. आप कर सकते हैं इस का लाभ उठाने लिखने के लिए एक क्लिक करें हैंडलर को दर्शाता है कि लेबल. यह रूप में सरल रूप में बदल रहा है:

btn.Click += new EventHandler(this.btn_click);

करने के लिए

btn.Click += (sender, args) => lbl.Text = "Clicked";

यह नहीं है इतना छोटा है । तुम सकता है, उदाहरण के लिए करते हैं:

btn.Click += (sender, args) => {
  if(something > 0)
    lbl.Text = "Did the process because something was > 0";
  else
    lbl.Text = "Can't start the process because something is 0";
}

या यदि आप एक तरीका है कि करता है "सामान"

void DoTheProcessAndOutputToTheLabel(Label x){
  int i = 0;
  foreach(var thing in things){
    bool success = ProcessTheThing(thing);
    if(success)
      i++;
  }
  x.Text = $"Processed {i} things";
}

btn.Click += (sender, args) => DoTheProcessAndOutputToTheLabel(lbl);

नहीं काफी यकीन है कि अपनी टिप्पणी में आप ने कहा कि "का उपयोग प्रेषक" लेकिन यहाँ इस घटना हैंडलर केवल कभी के लिए देता है एक बटन है ताकि आप वास्तव में जरूरत नहीं कुछ भी करने के लिए प्रेषक के साथ, क्योंकि यह स्पष्ट है जो प्रेषक है. उदाहरण के लिए आप हो सकता है:

btn.Tag = "hello"+i;
btn.Click += (sender, args) => DoTheProcessAndOutputToTheLabel(lbl, (sender as Control).Tag);

यह भेज देंगे, शब्द "hello2" में एक तर्क के रूप में (अगर यह जाने के दूसरे लूप के).. लेकिन वास्तविक क्योंकि आप जानते हैं कि प्रेषक आप के फार्म सकता है कुछ भी:

var x = "hello"+i;
btn.Click += (sender, args) => DoTheProcessAndOutputToTheLabel(lbl, x);

मैं केवल उम्मीद प्रेषक लेकिन उपयोगी जा रहा है, तो कुछ और परिवर्तन यूआई आप के बीच स्थापित करने और उपयोगकर्ता बटन क्लिक करने के लिए - उदाहरण के लिए, अगर वे चलाने के लिए एक प्रक्रिया है कि alters बटन टैग, तो सुनिश्चित करें कि का उपयोग, प्रेषक को आकर्षित करने के लिए नवीनतम मूल्य

2021-11-22 09:58:54

यह काम किया. लेकिन अपने मुख्य परियोजना के साथ, मैं पहले से ही इस्तेमाल किया एक प्रेषक यही कारण है कि यह एक त्रुटि है. और यह भी मैं की जरूरत है की जांच करने के लिए स्थिति बदलने से पहले लेबल पाठ है । तो आप कर सकते हैं सुझाव है कि एक तरह से इतना है कि मैं प्राप्त कर सकते हैं का उपयोग करने के लिए लेबल या किसी भी नियंत्रण से क्लिक विधि है?
jerin sifat

मैं की आवश्यकता होगी के उदाहरण देखने के लिए आप क्या करना चाहते हैं; विवरण थोड़ा अस्पष्ट है. मैं हूँ एक को संपादित करने के लिए पोस्ट करने के लिए दिखाने के लिए कैसे क्या आप चाहते हैं एक बहु लाइन विधि है, लेकिन कुछ अधिक विशिष्ट दिशा पर क्या आप मदद की जरूरत है उपयोगी हो जाएगा
Caius Jard
0

आप कर सकते हैं बनाए रखने का एक शब्दकोश करने के लिए बटन लेबल का उपयोग करें और है कि मिलान खोजने के लिए लेबल. एक अन्य विकल्प के लिए किया जाएगा संबद्ध करने के लिए एक सूचकांक के साथ दोनों बटन और लेबल और लेबल के साथ ।

मैं उदाहरण देकर स्पष्ट करना होगा शब्दकोश विकल्प आप के लिए.

Dictionary<Button, Label> mapping = new Dictionary<Button, Label>();

...

अपने पाश में,

mapping[btn] = lbl;

में अपने हैंडलर,

((Label)mapping[(Button)sender)]).Text = "some text";
2021-11-22 07:18:13

आप की जरूरत नहीं है बनाए रखने के लिए एक शब्दकोश के नियंत्रण, नियंत्रण संग्रह जो कुछ भी तुम डाल लेबल में यह तुम्हारे लिए क्या करेंगे
Caius Jard

वास्तव में, मैं इस्तेमाल कभी नहीं किया शब्दकोश, तो मुझे समझ नहीं आता कैसे कर सकते हैं मैं मूल्य में हैंडलर है । मैं नकल की और अपने कोड है और यह शो में एक त्रुटि हैंडलर है कि मानचित्रण की घोषणा नहीं की है.
jerin sifat

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में