找回密碼 或 安全提問
 註冊
|註冊|登錄

伊莉討論區

搜索
尊貴會員無限觀看附件圖片儲值後自動升級用戶組搞笑、娛樂、精彩的影片讓你看
火影忍者三上悠亞人妻霹靂259luxu世紀帝國自慰
house chバニーと単身不倫fc2 ppv flim13 ebod508吉沢梨亜

休閒聊天興趣交流學術文化旅遊交流飲食交流家庭事務PC GAMETV GAME
熱門線上其他線上感情感性寵物交流家族門派動漫交流貼圖分享BL/GL
音樂世界影視娛樂女性頻道潮流資訊BT下載區GB下載區下載分享短片
電腦資訊數碼產品手機交流交易廣場網站事務長篇小說體育運動時事經濟
上班一族博彩娛樂

桃園觀音文林路 女子

[繁]迷宮飯16-

[繁]無職轉生 第二季1

[繁]轉生貴族憑鑑定技

[繁]關於我轉生變成史

[簡]單人房、日照一般
C & C++ 語言C# 語言Visual Basic 語言PHP 語言JAVA 語言
查看: 2997|回復: 6
打印上一主題下一主題

[求助]C# 多個表單傳送資料的困惑[複製鏈接]

Rank: 1

帖子
377
積分
99 點
潛水值
26161 米
跳轉到指定樓層
樓主
發表於 2015-12-5 12:19 PM|只看該作者|倒序瀏覽
本帖最後由 arthurliuliu 於 2016-1-21 10:44 AM 編輯

版上的各位大大小弟自學C#初心者  遇到的問題
我想幾個問題想請教一下
第一個問題是
我設計一個程式form1有二個按鈕,第一個按鈕呼叫form2
form2可以輸入一個數值(int),按下確定後傳回form1儲存好
form1我按下第二個按鈕輸出form2輸入的值
問題來了,form2的數值無法傳過去,按下form1的第二個按鈕
...
瀏覽完整內容,請先 註冊登入會員
分享分享0收藏收藏0支持支持0
若新密碼無法使用,可能是數據未更新。請使用舊密碼看看。

使用道具檢舉

Rank: 2Rank: 2

帖子
541
積分
212 點
潛水值
13707 米
頭香
發表於 2015-12-6 09:32 AM|只看該作者
如果發覺自己無法使用一些功能或出現問題,請按重新整理一次,並待所有網頁內容完全載入後5秒才進行操作。
在Form2的button1裡面的最前一列,插入這一段試試
  1. if ((int.TryParse(textBox1.Text, out rpg.a) == false))
  2. {
  3.       MessageBox.Show("請輸入任意數字");
  4.       return;
  5. }
複製代碼
你在Form2沒有將輸入的值指定給Form1的a,所以會是預設值
如果發覺自己無法使用一些功能或出現問題,請按重新整理一次,並待所有網頁內容完全載入後5秒才進行操作。

使用道具檢舉

Rank: 2Rank: 2

帖子
541
積分
212 點
潛水值
13707 米
3
發表於 2015-12-6 09:44 AM|只看該作者
所有積分大於負-100的壞孩子,將可獲得重新機會成為懲罰生,權限跟幼兒生一樣。
我之前為了回答某論壇的問題,寫了這個範例,這個程式包含觸發事件、傳值等內容。
這是Form1
  1. public partial class Form1 : Form
  2.     {
  3.         //使用靜態欄位,方便多視窗時使用
  4.         //button1的觸發條件布林值
  5.         public static bool btnflag = false;
  6.         //可以從Form2直接指定的值
  7.         public static string textValue = "";
  8.         //從Form2輸入並傳過來的值
  9.         public static int a = 0;
  10.         //使用Timer來貫穿整個程式的事件、數值、文字的傳遞
  11.         private Timer timer1 = new Timer();

  12.         public Form1()
  13.         {
  14.             InitializeComponent();
  15.             //Timer觸發間隔為四分之一秒
  16.             timer1.Interval = 250;
  17.             //指定Timer的出發事件函式
  18.             timer1.Tick += new EventHandler(timer1_Tick);
  19.             //啟動Timer
  20.             timer1.Enabled = true;
  21.         }

  22.         //記住!這個按鈕不要連結觸發事件,所以在Fomr1直接按是沒有作用的
  23.         private void button1_Click(object sender, EventArgs e)
  24.         {
  25.             MessageBox.Show("這是從Form2控制Form1按鈕觸發");
  26.         }

  27.         //這個按鈕開啟Form2
  28.         private void button2_Click(object sender, EventArgs e)
  29.         {
  30.             Form2 f2 = new Form2();
  31.             f2.Show();
  32.         }

  33.         //秀出從Form2輸入並傳過來的值,如果還沒有叫出Form2之前會秀出0
  34.         private void button3_Click(object sender, EventArgs e)
  35.         {
  36.             MessageBox.Show("這是從Form2輸入的數值: " + a.ToString());
  37.         }

  38.         //Timer的處裡函式
  39.         private void timer1_Tick(object sender, EventArgs e)
  40.         {
  41.             //如果從Form2按下按鈕並傳來正確的值,就做出相應的動作
  42.             if (btnflag)
  43.             {
  44.                 //按鈕按一次只觸發一次
  45.                 btnflag = false;
  46.                 //立即改變文字框的值
  47.                 textBox1.Text = textValue;
  48.                 //直接觸發button1
  49.                 button1_Click(new object(), new EventArgs());
  50.             }
  51.             //沒事就使用閒置函式,這樣程式同時可以做其他事
  52.             Application.DoEvents();
  53.         }
複製代碼
}
這是Form2
  1. public partial class Form2 : Form
  2.     {
  3.         public Form2()
  4.         {
  5.             InitializeComponent();
  6.             //靜態的變數可以直接使用
  7.             textBox1.Text = Form1.a.ToString();
  8.         }

  9.         private void button1_Click(object sender, EventArgs e)
  10.         {
  11.             //沒輸入資料或是格式有錯就重新輸入
  12.             //這裡的int.TryParse將輸入的值輸出給Form1的a
  13.             if ((textBox1.Text.Length == 0) ||
  14.                 (int.TryParse(textBox1.Text, out Form1.a) == false))
  15.             {
  16.                 MessageBox.Show("請輸入任意數字");
  17.                 return;
  18.             }
  19.             //觸發Form1的button1
  20.             Form1.btnflag = true;
  21.             //指定Form1.Text1的值
  22.             Form1.textValue = "從Form2直接指定的文字資料";
  23.             //關閉Form2
  24.             this.Dispose();
  25.         }
  26.     }
複製代碼
...
瀏覽完整內容,請先 註冊登入會員
如果瀏覽伊莉時速度太慢或無法連接,可以使用其他分流瀏覽伊莉,www01.eyny.com(02,03)。

使用道具檢舉

Rank: 1

帖子
377
積分
99 點
潛水值
26161 米
4
發表於 2015-12-6 11:31 AM|只看該作者
謝謝RR大,這個很值得我參考,感謝你!!

使用道具檢舉

Rank: 1

帖子
226
積分
188 點
潛水值
12730 米
5
發表於 2015-12-7 01:55 AM|只看該作者
作法1
你的form2建構裡面用的from1要多加一個ref,不然你再怎麼樣都是改爽的,這樣傳遞是傳值的方式傳遞變數,這概念等同於你複製了一個文字檔出來,然後改了一堆東西改了很爽,但是原始檔案卻沒改,加了一個ref=你用捷徑的方式開啟檔案,這樣就能修改原始資料了

作法2
public int a = 0; \\宣告一個全域變數a
改為
public static a=;
form2的button1_Click裡面寫上
...
瀏覽完整內容,請先 註冊登入會員





使用道具檢舉

Rank: 1

帖子
377
積分
99 點
潛水值
26161 米
6
發表於 2015-12-7 02:05 PM|只看該作者
若對尊貴或贊助會員有任何疑問,歡迎向我們查詢。我們的即時通或MSN: admin@eyny.com
本帖最後由 drumking168 於 2015-12-7 02:06 PM 編輯

謝謝smallanan 大大指教
方法一,和二我大概懂了
方法三的話我得試試,因為我對類別部份還沒有很熟,我會多多加油的
另外大大們有沒有推薦的參考書,是加強C#資料庫指導的呢?
我發現我買的參考書,資料庫寫的很含糊,例題也很少,很難理解!!
再請各位大大多多指教了!!
PS:我買的是  Visual C# 2013基礎必修課  , Visual C# 2010 程式設計基礎與應用
...
瀏覽完整內容,請先 註冊登入會員
如果你忘記伊莉的密碼,請在登入時按右邊出現的 '找回密碼'。輸入相關資料後送出,系統就會把密碼寄到你的E-Mail。

使用道具檢舉

Rank: 1

帖子
226
積分
188 點
潛水值
12730 米
7
發表於 2015-12-14 02:07 AM|只看該作者
drumking168 發表於 2015-12-7 02:05 PM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

謝謝smallanan 大大指教
方法一,和二我大概懂了
方法三的話我得試試,因為我對類別部份還沒有很熟,我會多多 ...

...
瀏覽完整內容,請先 註冊登入會員

使用道具檢舉

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

Powered by Discuz!

© Comsenz Inc.

重要聲明:本討論區是以即時上載留言的方式運作,對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本討論區受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者發現有留言出現問題,請聯絡我們。有權刪除任何留言及拒絕任何人士上載留言,同時亦有不刪除留言的權利。切勿上傳和撰寫 侵犯版權(未經授權)、粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。
回頂部