COCO研究院

 找回密碼
 註冊
搜索
查看: 5015|回復: 9

[其他程式語言] 請教 C# 控制項陣列問題

[複製鏈接]
發表於 14-11-30 14:52 | 顯示全部樓層 |閱讀模式
VB2010的控制項陣列可以這樣處理,如下圖:

111.png


可是, 我把它"轉化" 到C#卻行不通, 如下圖:
222.png
private void button1_Click(object sender, EventArgs e)
        {
            for (int i = 1; i <= 3; i++)
            {
                groupBox1.Controls("label" + (i.ToString())).Text = i.ToString();
            }
        }


請問,這個錯誤訊息何解?
thanks.




發表於 14-11-30 19:13 | 顯示全部樓層
看來groupBox1.Controls在VB Net 是一個方法,在C#上是個屬性,我的作法
private void button1_Click(object sender, EventArgs e)
        {

             foreach (Control c in this.groupBox1.Controls)
             {
                 if (c is Label)
                 {   
                      c.Text =   c.Name.Substring(5) ;
                 }
             }

評分

參與人數 1金錢 +2 收起 理由
googleandy + 2 按一個讚

查看全部評分

 樓主| 發表於 14-11-30 19:22 | 顯示全部樓層
rich888 發表於 14-11-30 19:13
看來groupBox1.Controls在VB Net 是一個方法,在C#上是個屬性,我的作法
private void button1_Click(object ...

333.png
成功了, 謝謝 rich888大!

對,groupBox1.Controls在VB Net 是一個方法,在C#上是個屬性.
太強了!


發表於 14-11-30 19:28 | 顯示全部樓層
不客氣,有幫到您就好.
 樓主| 發表於 14-11-30 20:27 | 顯示全部樓層
本帖最後由 googleandy 於 14-11-30 20:35 編輯
rich888 發表於 14-11-30 19:13
看來groupBox1.Controls在VB Net 是一個方法,在C#上是個屬性,我的作法
private void button1_Click(object ...

888.png

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

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            //1.建立Label物件
            Label[] lblCtl = new Label[5];
            for (int i = 1; i <= 3; i++)
            {
                lblCtl = new Label();
            }
            for (int i = 1; i <= 3; i++)//!= lblStrkPrc.Length
            {
                //2.加入控制項
                this.groupBox1.Controls.Add(lblCtl);
                lblCtl.Text = "Label" ;
                lblCtl.Top = Convert.ToInt32(20 + (lblCtl.Height * i * 1.3));
                lblCtl.Height = 28;
                lblCtl.Width = 115;
                lblCtl.Left = 13;
                lblCtl.BackColor = Color.Lime;
            }
        }

      private void button1_Click(object sender, EventArgs e)
        {

        }                     
    }
}



請教 rich888大,
程式開始就已動態加入 控制項(藍字)

請問, button1_Click要填入什麼程式才可達到前面所述的效果?
thanks.

777.png
 樓主| 發表於 14-11-30 20:48 | 顯示全部樓層
11.png
我之所以有上述問題是因為 ---
  控制項若是 "動態"建立, 那麼,還在撰寫階段時候,
C#找不到那些控制項(執行才會產生).
請問如何克服這問題? thanks.



發表於 14-11-30 20:54 | 顯示全部樓層
本帖最後由 paf 於 14-11-30 20:58 編輯
googleandy 發表於 14-11-30 20:48
我之所以有上述問題是因為 ---
  控制項若是 "動態"建立, 那麼,還在撰寫階段時候,
C#找不到那些控制項(執 ...

將 Label[] lblCtl 宣告在全域變數
看要private Label[] lblCtl 或public  Label[] lblCtl 皆可

        private Label[] lblCtl;
        public Form1()
        {
            InitializeComponent();            
            lblCtl = new Label[5];

            .......


這樣子在button_click event中就可以針對lblCtl 做assign

評分

參與人數 1金錢 +2 收起 理由
googleandy + 2 太強了

查看全部評分

 樓主| 發表於 14-11-30 21:03 | 顯示全部樓層
paf 發表於 14-11-30 20:54
將 Label[] lblCtl 宣告在全域變數
看要private Label[] lblCtl 或public  Label[] lblCtl 皆可

太強了, 成功了.
原來要宣告在全域變數區.

感謝 paf大.
Coco-In 的C#高手真不少.
發表於 14-12-1 00:06 | 顯示全部樓層
不好意思 剛好人不再 ,有人回答的就好.

評分

參與人數 1金錢 +2 收起 理由
googleandy + 2 按一個讚

查看全部評分

發表於 14-12-2 00:05 | 顯示全部樓層
Hi

補充一下

VB.NET的索引子用小括號取

若要用C#  請改用中括號


1.jpg

評分

參與人數 1金錢 +2 收起 理由
googleandy + 2 太強了,感恩!

查看全部評分

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

手機版|Archiver|站長信箱|廣告洽詢|COCO研究院

GMT+8, 24-6-3 21:47

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回復 返回頂部 返回列表
理財討論網站 | AI繪圖AI超擬真美女AI beauty AI Stable DiffusionAI正妹AI Lookbook