佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1381|回复: 12

嘗試用C#做Windows Application

[复制链接]
发表于 8-5-2007 09:31 AM | 显示全部楼层 |阅读模式
最近嘗試用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,但也是一樣看不到它們。
回复

使用道具 举报


ADVERTISEMENT

发表于 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 发表


可以。


你是說以上三種方法都可以嗎?可是我加了後都看不到。
回复

使用道具 举报

Follow Us
发表于 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 | 显示全部楼层
原帖由 goatstudio 于 9th May, 2007 12:10 发表


你怎麼辦到的? 我看到我給的 CODE 出錯了

Form form2 = new Form2("任何一个文字";

應該改成

Form2 form2 = new Form2("任何一个文字";


基本上我沒抄你的Code,我明白了你的方法後,自己寫的。

我就是用這個的:Form2 form2 = new Form2("任何一个文字";
回复

使用道具 举报


ADVERTISEMENT

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


基本上我沒抄你的Code,我明白了你的方法後,自己寫的。

我就是用這個的:Form2 form2 = new Form2("任何一个文字";



好... 这就是所谓的 smart copy and paste 了...
加油!
回复

使用道具 举报

 楼主| 发表于 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 编辑 ]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 11-9-2025 01:56 AM , Processed in 0.135537 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表