查看: 1381|回复: 12
|
嘗試用C#做Windows Application
[复制链接]
|
|
最近嘗試用C#來開發Windows Application,但遇到了一些問題,不曉得有人會用C#開發Windows Application嗎?
以下為例子:
我有2個Forms.第一個只有一個按鈕,第二個只有一個TextBox。第一個Form的按鈕會打開第2個Form,並assign一個string到第2個Form的TextBox裡。
Form1
-----
Button1的Code如下
Form form2 = new Form2();
//form2.TextBox1.Text = "test string";
form2.ShowDialog();
Form2
-----
TextBox1
問題是我在form2裡看不到TextBox1,要怎麼樣才能做到set text呢?
1.我試過在Form2裡加一個public setText(string value),但Form1裡的form2 (variable)還是看不到這個public method,為甚麼呢?
2.也嘗試過一個非常不好的做法,我將TextBox1的accessibility改成public,結果Form1裡還是看不到它。
3.也嘗試過在Form2裡加入properties get/set,但也是一樣看不到它們。 |
|
|
|
|
|
|
|
发表于 8-5-2007 09:56 AM
|
显示全部楼层
如果你是用 Visual Studio, 那么在你的 Form2 另外制作一个 constructor:
public Form2(string text)
{
InitializeComponent(); // 这是 Visual Studio 通常会放的, 没有的话删除掉。
this.TextBox1.Text = text;
}
然后你在 Form1 呼叫的时候:
Form form2 = new Form2("任何一个文字");
|
|
|
|
|
|
|
|

楼主 |
发表于 8-5-2007 10:37 AM
|
显示全部楼层
回复 #2 goatstudio 的帖子
原來是這樣啊?今晚再試試。
那是不是說我不可以在Visual Studio的Form裡加public methods呢?要不然為甚麼加後不能用呢? |
|
|
|
|
|
|
|

楼主 |
发表于 9-5-2007 12:23 AM
|
显示全部楼层
太好了!果然是用Constructor Overloading這個方法就可以了。 |
|
|
|
|
|
|
|
发表于 9-5-2007 10:29 AM
|
显示全部楼层
原帖由 itplanet 于 8-5-2007 09:31 AM 发表
問題是我在form2裡看不到TextBox1,要怎麼樣才能做到set text呢?
1.我試過在Form2裡加一個public setText(string value),但Form1裡的form2 (variable)還是看不到這個public method,為甚麼呢?
2.也嘗試過一個非常不好的做法,我將TextBox1的accessibility改成public,結果Form1裡還是看不到它。
3.也嘗試過在Form2裡加入properties get/set,但也是一樣看不到它們
可以。  |
|
|
|
|
|
|
|

楼主 |
发表于 9-5-2007 11:49 AM
|
显示全部楼层
原帖由 tensaix2j 于 9th May, 2007 10:29 发表
可以。
你是說以上三種方法都可以嗎?可是我加了後都看不到。 |
|
|
|
|
|
|
|
发表于 9-5-2007 12:10 PM
|
显示全部楼层
原帖由 itplanet 于 9-5-2007 12:23 AM 发表
太好了!果然是用Constructor Overloading這個方法就可以了。
你怎麼辦到的? 我看到我給的 CODE 出錯了
Form form2 = new Form2("任何一个文字");
應該改成
Form2 form2 = new Form2("任何一个文字");
|
|
|
|
|
|
|
|

楼主 |
发表于 9-5-2007 12:50 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 9-5-2007 02:24 PM
|
显示全部楼层
|
|
|
|
|
|
|

楼主 |
发表于 10-5-2007 06:54 PM
|
显示全部楼层
現在的問題是如何在Form2裡改變Form1的TextBox?這是由於與之前一樣的問題,我在Form1中加了method來更改其TextBox的內容,但在Form2中卻看不見它。
(註:我在Form2的Constructor中傳入Form1的reference) |
|
|
|
|
|
|
|
发表于 17-5-2007 11:57 PM
|
显示全部楼层
虽然说这里是交流地,可是我建议你去www.google.com找资料,我也是这样学习的。。。。。 |
|
|
|
|
|
|
|

楼主 |
发表于 21-5-2007 11:02 AM
|
显示全部楼层
原帖由 kucca 于 17th May, 2007 23:57 发表
虽然说这里是交流地,可是我建议你去www.google.com找资料,我也是这样学习的。。。。。
谷歌是我最好的老師,我又怎會不問呢?就是在谷歌找不到才來這裡問看看,順道可以和其他有同樣問題的佳禮人分享。如果你有這樣的連接,可以與我分享嗎?謝謝!要不然,你可以分享一些你所用的關鍵詞彙或搜索語句,再次的謝謝您! |
|
|
|
|
|
|
|
发表于 22-5-2007 05:56 PM
|
显示全部楼层
把form2的textbox改成public
form2.showdialog();
textbox1.text = form2.textbox1.text;
你之前的问题其实可以用Refresh()来解决
form2 form = new form2();
form.textbox1.text = "test";
form.textbox1.refresh();
[ 本帖最后由 ctrl 于 22-5-2007 06:04 PM 编辑 ] |
|
|
|
|
|
|
| |
本周最热论坛帖子
|