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

伊莉討論區

搜索
感激所有對伊莉作出奉獻的人尊貴會員無限下載附件認識好友、聊天,分享生活趣事
霹靂一拳超人催眠進擊的巨gd高中惡靈古堡
スレイブwaterrin僕はリー兔秘密花waterrinhoneysel飛車

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

[繁]關於我轉生變成史

[繁]關於我轉生變成史

[簡]單人房、日照一般

[繁]海賊王 航海王 11

[簡]假面騎士GOTCHARD

(4月新番)[繁]戰隊大
C & C++ 語言C# 語言Visual Basic 語言PHP 語言JAVA 語言
查看: 3078|回復: 5
打印上一主題下一主題

[問題]請教一下Property 設定的問題[複製鏈接]

帖子
39
積分
0 點
潛水值
9491 米
跳轉到指定樓層
樓主
發表於 2014-7-5 03:30 PM|只看該作者|倒序瀏覽
本帖最後由 darkjack 於 2014-7-5 05:36 PM 編輯
  1. 不好意思我又來打擾了~~XD~請教各位先進 在Property 的問題 ~我想問的是~在不同的表單中傳遞字串~是不是不能直接 New Property 的類別來使用呢?還是我的寫法錯了~我有看過MSDN,Property的用法只是大概瞭解~使用的邏輯還是要加強~可否請個位先進說明一下~謝謝
複製代碼
  1. Public Class Form1
  2.   
  3.     Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load

  4.         MaintainRecordDataSet.EnforceConstraints = False
  5.         'TODO: 這行程式碼會將資料載入 'MaintainRecordDataSet.MaintainDetails' 資料表。您可以視需要進行移動或移除。
  6.         Me.MaintainDetailsTableAdapter.Fill(Me.MaintainRecordDataSet.MaintainDetails)
  7.         'TODO: 這行程式碼會將資料載入 'MaintainRecordDataSet.Maintain' 資料表。您可以視需要進行移動或移除。
  8.         Me.MaintainTableAdapter.Fill(Me.MaintainRecordDataSet.Maintain)
  9.         MaintainRecordDataSet.EnforceConstraints = True

  10.     End Sub
複製代碼
  1. Public Class Form2

  2.     Private Sub Form2_Load(sender As Object, e As EventArgs) Handles Me.Load

  3.         Dim STR As New TGetString
  4.         STR.GetName = TextBox1.Text   <==為什麼Textbox1的值是空的

  5.     End Sub
  6. End Class
複製代碼
  1. Public Class TGetString
複製代碼
  1. Public Class TGetString
  2.     Dim FGetName As String

  3.     Property GetName As String
  4.         Get
  5.             Dim cnStr As String = My.Settings.MoodAccountConnectionString
  6.             Dim cnConnection As New SqlConnection(cnStr)
  7.             Dim cmStr As String = "SELECT ReplaceParts FROM MaintainDetails WHERE ReplaceParts = '" & CStr(MaintainRecord.MaintainDetailsDataGridView.CurrentRow.Cells(1).Value) & "'"
  8.             Dim cmCommand As New SqlCommand(cmStr, cnConnection)
  9.             cnConnection.Open()
  10.             Dim dr As SqlDataReader = cmCommand.ExecuteReader
  11.             If dr.Read Then
  12.                 FGetName = dr.GetString(0)
  13.             End If
  14.             cnConnection.Close()

  15.             GetName = FGetName
  16.         End Get
  17.         Set(value As String)

  18.             FGetName = value

  19.         End Set
  20.     End Property
  21. End Class
複製代碼


不好意思類別貼不上~~~請見諒!
...
瀏覽完整內容,請先 註冊登入會員
分享分享0收藏收藏0支持支持0
若有安裝色情守門員,可用無界、自由門等軟件瀏覽伊莉。或使用以下網址瀏覽伊莉: http://www.eyny.com:81/index.php

使用道具檢舉

Rank: 3Rank: 3Rank: 3

帖子
317
積分
1000 點
潛水值
16095 米
頭香
發表於 2014-7-6 02:47 PM|只看該作者
若瀏覽伊莉的時侯發生問題或不正常情況,請使用Internet Explorer(I.E)。
本帖最後由 sam30525sam 於 2014-7-6 03:55 PM 編輯

你的編排可以修一下嗎?
要看兩三次才知道妳想要表達什麼,
而且你把許多問題都合併再一起,麻煩要問的時候請條列的問。

我直接坦白說,
你的問題,跟你的下方程式碼的錯誤完全是兩碼子事。

1. 先回你的程式碼這段
  1. STR.GetName = TextBox1.Text   <==為什麼Textbox1的值是空的
複製代碼
你這段是在講,
你把TextBox1.Text的值給STR.GetName,
因為你TextBox1.Text沒給值當然是空的。

2. 屬性(Property)的問題

屬性當然可以new,是寫在class裡面,
但是你程式碼中class寫得很奇怪,
你要運算一個Property通常還會搭配一個Field,
運算用Field,Property是在放Field後的結果,
但是你全部都寫在get-set裡面,這樣的習慣很不好,

突然找不到比較好的範例,我直接說好了,你要把這一段抽出來做成一個 private method
  1.         Get
  2.             Dim cnStr As String = My.Settings.MoodAccountConnectionString
  3.             Dim cnConnection As New SqlConnection(cnStr)
  4.             Dim cmStr As String = "SELECT ReplaceParts FROM MaintainDetails WHERE ReplaceParts = '" & CStr(MaintainRecord.MaintainDetailsDataGridView.CurrentRow.Cells(1).Value) & "'"
  5.             Dim cmCommand As New SqlCommand(cmStr, cnConnection)
  6.             cnConnection.Open()
  7.             Dim dr As SqlDataReader = cmCommand.ExecuteReader
  8.             If dr.Read Then
  9.                 FGetName = dr.GetString(0)
  10.             End If
  11.             cnConnection.Close()

  12.             GetName = FGetName
  13.         End Get
複製代碼
因為你在get裡面處理太多事情,有種「腐爛程式碼的味道」,所以你要抽出來,
盡量在get-set裡面越單純越好。

3. Form之間傳送資料

不同Form之間要傳送資料可以,但你的問題跟你下方給的程式碼完全對不上,
我不懂你在問什麼。
如果你要不同Form之間傳送資料的話,這個範例你看看
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

語言用C#,但是基本上一模一樣,
這是非常經典且基本的做法。

...
瀏覽完整內容,請先 註冊登入會員
分享使你變得更實在,可以使其他人感到快樂,分享是我們的動力。今天就來分享你的資訊、圖片或檔案吧。

使用道具檢舉

帖子
39
積分
0 點
潛水值
9491 米
3
發表於 2014-7-7 06:54 PM|只看該作者
所有積分大於負-100的壞孩子,將可獲得重新機會成為懲罰生,權限跟幼兒生一樣。
謝謝sam30525sam的解說~ 不好意思~晚了時間回覆~~其實我不太懂Property的用法~這寫法也是我從書上看來的~~XD~我試著書上的寫法來寫~只是如何從FORM1 傳至 FORM2 我在書上看得很模糊~還在瞭解中~~還有您說的Field 的寫法我也沒試過~~我會記住您所講的~~我先去看一下您給的範例~~~謝謝sam30525sam
如果發覺自己無法使用一些功能或出現問題,請按重新整理一次,並待所有網頁內容完全載入後5秒才進行操作。

使用道具檢舉

帖子
39
積分
0 點
潛水值
9491 米
4
發表於 2014-7-8 11:00 AM|只看該作者
回覆中加入附件並不會使你增加積分,請使用主題方式發佈附件。
本帖最後由 terrypen 於 2014-7-8 11:03 AM 編輯

看完了sam30525sam 的youTube 影片~~對於Form之間傳值~整個都清楚了~~真的非常謝謝~~讓我學了不少~~只是我練習時遇到了一個問題~~同樣的程式碼~~我在vs 2008 可以執行~~為什麼在 vs 2012就不行~~~是我vs2012 有問題嗎?還是這樣的程式碼在vs 2012 需要有不同的寫法才行呢~~能否解個疑惑~~謝謝啦~~以下是我寫的程式碼

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

使用道具檢舉

Rank: 3Rank: 3Rank: 3

帖子
317
積分
1000 點
潛水值
16095 米
5
發表於 2014-7-8 11:58 AM|只看該作者
如果發覺自己無法使用一些功能或出現問題,請按重新整理一次,並待所有網頁內容完全載入後5秒才進行操作。
本帖最後由 sam30525sam 於 2014-7-8 12:01 PM 編輯
terrypen 發表於 2014-7-8 11:00 AM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

看完了sam30525sam 的youTube 影片~~對於Form之間傳值~整個都清楚了~~真的非常謝謝~~讓我學了不少~~只是我 ...
...
瀏覽完整內容,請先 註冊登入會員





成為伊莉的版主,你將獲得更高級和無限的權限。把你感興趣的版面一步步地發展和豐盛,那種滿足感等著你來嚐嚐喔。

使用道具檢舉

帖子
39
積分
0 點
潛水值
9491 米
6
發表於 2014-7-8 02:02 PM|只看該作者
噗~不好意思~~我沒講清楚~~是沒什麼問題~~也沒錯誤訊息~~只是debug時~~在vs 2012無法傳值過去~~在插入的中斷點沒效果直接就跳過去了~~無法看到其內容如何~vs 2008卻很正常~~這讓我百思不解~~真不好意思~~我在慢慢試看看~~再次謝謝sam30525sam~~

使用道具檢舉

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

Powered by Discuz!

© Comsenz Inc.

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