none
C#動態button對應動態textbox RRS feed

  • 問題

  • 請問用c#如何讓動態產生的陣列的button,click事件所計算的值

    填入相對應的動態產生的陣列textbox中

    例如:

    button[0]產生的值填入textbox[0]

    button[1]產生的值填入textbox[1]

    以此類推

    2015年8月20日 上午 03:26

解答

  • 你試試在 button 加上 bt[i].Tag = i ;

    for (int i = 1; i < a; i++)
                {
                   ....略   
          bt[i].Tag = i;

                }

    然後在 Button_Click 事件 ,將

    private void but_Click(object sender, EventArgs e)
            {
                int index = (int)(sender as Button).Tag;
                tbx[index].Text = (sender as Button).Text;
            }

    • 已標示為解答 Flysunwind 2015年8月20日 上午 09:30
    2015年8月20日 上午 08:09

所有回覆

  • 你是要這樣嗎?

    Button[] but = new Button[Count];
                for (int i = 0; i < but.Length; ++i)
                {
                    but[i] = new Button();
                    but[i].Text = i.ToString();
                }


                TextBox[] Txt = new TextBox[Count];
                for (int i = 0; i < but.Length; ++i)
                {
                    Txt[i] = new TextBox();
                    Txt[i].Text = but[i].Text;
                }

    2015年8月20日 上午 03:52
  • 你是要這樣嗎?

    Button[] but = new Button[Count];
                for (int i = 0; i < but.Length; ++i)
                {
                    but[i] = new Button();
                    but[i].Text = i.ToString();
                }


                TextBox[] Txt = new TextBox[Count];
                for (int i = 0; i < but.Length; ++i)
                {
                    Txt[i] = new TextBox();
                    Txt[i].Text = but[i].Text;
                }

    感謝回覆,我需要的是在動態的button_click事件中,點擊button[0] ,textbox[0]的值就會+1,這樣的效果

    2015年8月20日 上午 03:58
  • 您可以考慮將Button和TextBox製作成[web使用者控制項], 然後將程式製作在使用者控制項中, 然後在網頁上放置多個[web使用者控制項]
    2015年8月20日 上午 04:00
  • 加上這行就是動態事件 button[i].Click +=new EventHandler(Button_Click)

    private void Button_Click(object sender, EventArgs e)
     {
         textbox[i] += 1 ;
     }

    2015年8月20日 上午 04:46
  • 您可以考慮將Button和TextBox製作成[web使用者控制項], 然後將程式製作在使用者控制項中, 然後在網頁上放置多個[web使用者控制項]
    感謝回覆,不過我寫的是市集應用程式好像不適用此方式
    2015年8月20日 上午 05:38
  • 加上這行就是動態事件 button[i].Click +=new EventHandler(Button_Click)

    private void Button_Click(object sender, EventArgs e)
     {
         textbox[i] += 1 ;
     }

    感謝回覆,此方式我已經試過了,在click事件中是無法使用textbox[i]的
    2015年8月20日 上午 05:40
  •  public MainPage()
            {

                this.InitializeComponent();
                ImageBrush brush = new ImageBrush();
                int a = 6;     
                Rectangle[] bt = new Rectangle[a];
                TextBox[] tbx = new TextBox[a];

                for (int i = 1; i < a; i++)
                {
                    bt[i] = new Rectangle();
                    bt[i].Name = "bt" + i;
                    brush.ImageSource = new BitmapImage(new Uri("ms-appx:///Image/Add.png"));
                    bt[i].Fill = brush;
                    bt[i].Stretch = Stretch.Fill;
                    bt[i].Width = 200;
                    bt[i].Height = 200;
                    bt[i].Margin = new Thickness(10, 0, 0, 0);            
                    bt[i].PointerPressed += bt_PointerPressed;
                    bt[i].PointerReleased += bt_PointerReleased;
                    Tgrid.Children.Add(bt[i]);             

                }

                for (int j = 1; j < a; j++)
                {
                    tbx[j] = new TextBox();
                    tbx[j].Name = "btx" + j;
                    tbx[j].Width = 200;
                    tbx[j].Height = 200;
                    tbx[j].FontSize = 50;
                    tbx[j].Margin = new Thickness(10, 0, 0, 0);
                    tbx[j].PreventKeyboardDisplayOnProgrammaticFocus = true;
                    Tgrid2.Children.Add(tbx[j]);
                }        
            }

            void bt_PointerPressed(object sender, PointerRoutedEventArgs e)
            {

            }

            private void bt_PointerReleased(object sender, PointerRoutedEventArgs e)
            {


            }

    這是我現在所寫的程式碼,會產生一排按鈕和一排textbox,要的效果是按第一個按鈕會在第一個textbox的值+1,以此類推

                                                                                                                
    • 已編輯 Flysunwind 2015年8月20日 上午 05:56
    2015年8月20日 上午 05:55
  • 你看能不能把陣列宣告移到method外
    2015年8月20日 上午 06:16
  • 你看能不能把陣列宣告移到method外
    感謝回覆,現在可以呼叫tbx但是問題卡在點擊後要如何,讓bt[1]傳值給tbx[1],bt[2]傳值給tbx[2]的邏輯
    2015年8月20日 上午 06:38
  • click事件有sender,你用它來判別是哪個button就行了
    2015年8月20日 上午 07:54
  • 你試試在 button 加上 bt[i].Tag = i ;

    for (int i = 1; i < a; i++)
                {
                   ....略   
          bt[i].Tag = i;

                }

    然後在 Button_Click 事件 ,將

    private void but_Click(object sender, EventArgs e)
            {
                int index = (int)(sender as Button).Tag;
                tbx[index].Text = (sender as Button).Text;
            }

    • 已標示為解答 Flysunwind 2015年8月20日 上午 09:30
    2015年8月20日 上午 08:09
  • ASP.Net  ? 這要考慮到 postback 吧.

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2015年8月20日 上午 09:12
    版主
  • 你試試在 button 加上 bt[i].Tag = i ;

    for (int i = 1; i < a; i++)
                {
                   ....略   
          bt[i].Tag = i;

                }

    然後在 Button_Click 事件 ,將

    private void but_Click(object sender, EventArgs e)
            {
                int index = (int)(sender as Button).Tag;
                tbx[index].Text = (sender as Button).Text;
            }

    感謝各位,這是解答
    2015年8月20日 上午 09:31