iT邦幫忙

0

C# Winform Form 表單 更改 Button 的問題

  • 分享至 

  • xImage

如題
我現在創了兩個 Form 表單,Form1、Form2
分別都有 Button1、Button2 的按鈕

https://ithelp.ithome.com.tw/upload/images/20220717/20149954WUIAKRLDWE.jpg

https://ithelp.ithome.com.tw/upload/images/20220717/20149954eXNkl8XiKF.jpg

目前按下 Button1 會產生 Form2 表單

我希望按下 button2 可以更改 button1 的Text 改成叫 button3之類的

但是我不知道要把更改 Text這段程式放在哪裡才對。

我目前想法是在 Form1 創了一個叫做Text_changed_1 的 bool變數 預設 false

希望透過按下 button2 按鈕讓 Text_changed_1變成 true

進而改變 Form1 表單的 button1 按鈕

程式碼如下:
public partial class Form1 : Form
{

   public bool Text_change_1 = false;

    public Form1()
    {
        InitializeComponent();


    }

    private void Form1_Load(object sender, EventArgs e)
    {
        

    }

    private void button1_Click(object sender, EventArgs e)
    {
        Form2 p1 = new Form2();
        p1.Owner = this;
        p1.Show();
    }
}

public partial class Form2 : Form
{

    public Form2()
    {
        InitializeComponent();
    }

    private void button2_Click(object sender, EventArgs e)
    {
        Form1 f1 = (Form1)this.Owner;
        f1.Text_change_1 = true;
    }
}

還請各位 C#高手指點一下,小弟最近還在摸索 C#,感謝!

s82910g iT邦新手 5 級 ‧ 2022-07-18 12:01:21 檢舉
後來參考了這篇
https://yuchungchuang.wordpress.com/2018/06/09/winform-%E5%A4%9A%E9%87%8D%E8%A6%96%E7%AA%97%E7%9A%84%E6%93%8D%E4%BD%9C-multiple-forms/

新增一個方法在 Form1 如以下:
public void SetTextBox(string text) //實作一個公開方法,使其他Form可以傳遞資料進來
{
textBox1.Text = text;
}

就可以在 Form2 的 f1 引用 SetTextBox這個方法,
進而改變Button1 的文字
Homura iT邦高手 1 級 ‧ 2022-07-18 17:03:24 檢舉
我也是這樣做
不然Form元件都是private
無法在其他Form呼叫
水無痕 iT邦新手 3 級 ‧ 2022-07-29 09:17:43 檢舉
回 Homura:
Form 元件可以改成 public
元件 Property > Modifiers > 改成 Public
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1
海綿寶寶
iT邦大神 1 級 ‧ 2022-07-17 16:52:28

參考這篇可不可用

0
franx0722
iT邦新手 2 級 ‧ 2022-07-18 08:21:09

新增類別Define.cs
靜態Form: myForm1,myForm2
Form1_Load:Define.myForm1 = this;
Form2_Load:Define.myForm2 = this;
button1_Click:Define.myForm2.show();
button2_Click:Define.myForm1.Text = "Button3";
這樣嗎?

0
五十男
iT邦研究生 5 級 ‧ 2022-07-19 15:51:06

Form1:
button1 Modifiers 屬性 設成 Public

        private void button1_Click(object sender, EventArgs e)
        {     
            Form2 p1 = new Form2();
            p1.ShowDialog(this);
        }

Form2:

        private void button1_Click(object sender, EventArgs e)
        {
            ((Form1)this.Owner).button1.Text = "Test";
        }

我要發表回答

立即登入回答