none
如何在自定類別改變Form1上的控制項呢? RRS feed

  • 問題

  • 請問該如何在自定類別改變Form1上的控制項呢?
    比如說Form1上有個TextBox1,希望在myclass使TextBox1.text="TEST";
    namespace WindowsFormsApplication2
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            private void Form1_Load(object sender, EventArgs e)
            {
                myclass mycs = new myclass();
            }
        }
        public class myclass
        {
            public myclass
            {
                //textbox1.text="TEST";
            }
    
    


    }


    該如何做呢,將TextBox1設成public,
    再去myclass改成
    Form1 form1=new Form1();
    form1.textbox1.Text="test";
    也不行,我想是因為又new了一個Form1的關係,請問該如何解決?
    2009年8月14日 上午 04:17

解答

  • Hi, 可以用公用屬性把物件參考傳進去控制 

    namespace WindowsFormsApplication2
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                myclass mycs = new myclass();	    mycs. tbx =TextBox1;
            }
        }
        public class myclass
        {       public TextBox tbx { get; set; }
            public void Test()
            {
                tbx .text="TEST";
    }

    但最好還是在myclass內加入事件 
    事件觸發後由Form1去代為控制 

    不過以你的範例來看
    myclass mycs = new myclass();
    TextBox1.Text="Test";
    就好了


    http://www.dotblogs.com.tw/larrynung/
    • 已標示為解答 allen741230 2009年8月14日 上午 11:56
    2009年8月14日 上午 04:52

所有回覆

  • 以下作法是否可以符合你的需求 ?

    namespace WindowsFormsApplication5
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                MyClass mycs = new MyClass();
                mycs.myclass = "test string";
                this.textBox1.Text = mycs.myclass;
            }
        }
    
        public class MyClass
        {
            private string _txt;
            public string myclass
            {
                get 
                {
                    return _txt; 
                }
                set 
                {
                    _txt = value; 
                } 
            }
    
        }
    }
    

    .NET菜鳥自救會 http://www.dotblogs.com.tw/chou/
    2009年8月14日 上午 04:51
    版主
  • Hi, 可以用公用屬性把物件參考傳進去控制 

    namespace WindowsFormsApplication2
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                myclass mycs = new myclass();	    mycs. tbx =TextBox1;
            }
        }
        public class myclass
        {       public TextBox tbx { get; set; }
            public void Test()
            {
                tbx .text="TEST";
    }

    但最好還是在myclass內加入事件 
    事件觸發後由Form1去代為控制 

    不過以你的範例來看
    myclass mycs = new myclass();
    TextBox1.Text="Test";
    就好了


    http://www.dotblogs.com.tw/larrynung/
    • 已標示為解答 allen741230 2009年8月14日 上午 11:56
    2009年8月14日 上午 04:52
  • 我在開發,通常將企業物件傳到類別中處理,然後再將企業物件結果傳回來在Binding 到UI上.
    這樣你的類別才能降偶,及在多個專案中共用.
    比如說你這個Class 現在是秀在Windows Form上.如果公司要建Web Form,雖然邏輯相同,但妳還要相同的Class 只有UI 的控制項不同而已.

    2009年8月14日 上午 05:29
  • 感謝各位解答,因希望是用myclass去改變form1,參考蹂躪大的程式碼小弟的問題解決了。

    2009年8月14日 上午 11:55