iT邦幫忙

0

C# 傳值問題

c#

小弟剛接觸C#所以有滿滿的問題......
目前打算在forms裡建一個陣列讓其他usercontrol在執行時可以存值在裡面,但在寫usercontrol程式碼時都會說找不到這個陣列,請問各位C#高手是發生什麼問題QQ
是陣列沒有Public嗎??
https://ithelp.ithome.com.tw/upload/images/20210517/20137575r0iYXKe47W.pnghttps://ithelp.ithome.com.tw/upload/images/20210517/20137575MGTSrilQxa.png
forms1

using System;
using System.Windows.Forms;
using System.Collections.Generic;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
        }
        
        string[] orderlist = new string[5];
        
        private void button1_Click(object sender, EventArgs e)
        {
            SidePanel.Height = button1.Height;
            SidePanel.Top = button1.Top;
            panel2.Controls.Clear();
            panel2.Controls.Add(new UserControl1());
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            panel2.Controls.Add(new UserControl1());
            SidePanel.Height = button1.Height;
            SidePanel.Top = button1.Top;
        }
    }
}

usercontrol

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 WindowsFormsApp1
{
    public partial class UserControl1 : UserControl
    {
        public UserControl1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {

            orderlist[0] = "漢堡";
            this.Controls.Clear();
            this.Controls.Add(new UserControl6());
        }
    }
}
請把程式碼PO上來 用兩個``` 框起來~
frank0928 iT邦新手 5 級 ‧ 2021-05-17 19:04:56 檢舉
好的
1
glj8989332
iT邦新手 1 級 ‧ 2021-05-17 19:14:09

你的orderlist是定義在Form1而不是UserControl1, 當然無法存取....

不知道你完整的功能, 但把orderlist定義在UserControl1就能用它了

frank0928 iT邦新手 5 級 ‧ 2021-05-17 19:32:59 檢舉

但我是想要讓UserControl1用到Form1的orderlist,一樣是要宣告一個嗎?

聽起來你有很多基礎要懂
不同class也沒繼承自然不認識~
若硬要使用它,要不就是靠傳值 接收值~

frank0928 iT邦新手 5 級 ‧ 2021-05-17 22:06:28 檢舉

請問大概的做法為何

1
小魚
iT邦大師 1 級 ‧ 2021-05-17 19:35:26

最簡單的方式,
使用一個static變數...

另外陣列就不要用了,
直接用List就好了.

0
海綿寶寶
iT邦大神 1 級 ‧ 2021-05-17 20:29:21

https://ithelp.ithome.com.tw/upload/images/20210517/20001787ZTG1fDvWYz.png

frank0928 iT邦新手 5 級 ‧ 2021-05-17 20:40:14 檢舉

好的,已改進。

/images/emoticon/emoticon12.gif

1
rofellos
iT邦新手 5 級 ‧ 2021-05-18 08:28:35

Form1多做一個功能設定orderlist的值
再由UserControl1呼叫Form1.XXX("漢堡")

1
君莫笑
iT邦新手 5 級 ‧ 2021-05-18 14:54:26

C#_WindowsForm_跳頁x單向傳遞資料寫法_雙向傳遞資料筆記
https://coolmandiary.blogspot.com/2016/08/cwindowsformx.html

0
franx0722
iT邦新手 5 級 ‧ 2021-05-20 09:57:30

1.可以用Delegate
2.再創一個新類別 Define_Form.cs
Define_Form:
public static Form _main = new From();
Form1:
在Form1_Load裡
Define_Form._main = this;
在UserControl1裡
Define_Form._main.屬性 或 方法 ...等

我要發表回答

立即登入回答