台灣最大程式設計社群網站
線上人數
1339
 
會員總數:246134
討論主題:189713
歡迎您免費加入會員
討論區列表 >> VB.NET >> Controls("TextBox" & A).Text 並未將物件參考設定為物件的執行個體
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
Controls("TextBox" & A).Text 並未將物件參考設定為物件的執行個體
價值 : 50 QP  點閱數:371 回應數:15
樓主

penny
門外漢
0 1
23 6
發送站內信

Dim IN_(6, 6) As Double
Dim A As Integer = 1
For X = 0 To 6
For Y = 0 To 6
IN_(X, Y) = Controls("TextBox" & A).Text
A += 1
Next
Next
請問這樣寫有寫錯嗎?
之前也有這樣寫,但是沒有這些問題。

搜尋相關Tags的文章: [ Controls("TextBox" & A).Text ] , [ 並未將物件參考設定為物件的執行個體 ] ,
本篇文章發表於2019-11-14 14:16
1樓
回應

P陳
檢舉此回應
您的FORM上有49個TextBox 嗎?
從 TextBox1~TextBox49
本篇文章回覆於2019-11-14 17:26
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

penny
檢舉此回應
有的
本篇文章回覆於2019-11-14 17:30
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

city
檢舉此回應
IN_(X, Y) = 什麼東西的.Controls("TextBox" & A).Text


例如 :

IN_(X, Y) = Me.Controls("TextBox" & A).Text
本篇文章回覆於2019-11-14 19:11
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

P陳
檢舉此回應
那檢查一下了
dim Ctl1() as Control
for x=0 to 6
for y=0 to 6
ctl1=me.controls.find("Textbox" & A,True)
if ctl1.length=0 then
msgbox ("找不到 " & "Textbox" & A)
continue for
end if
IN_(X, Y) = ctl1(0).Text
next y
next x
本篇文章回覆於2019-11-14 19:25
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

penny
檢舉此回應
我把你的程式複製上去檢查 他不會跳出MsgBox 所以這是什麼問題呢..?

本篇文章回覆於2019-11-14 19:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

Ader Chen
檢舉此回應

可否試試看下面的程式跑完後的 IN_() 內容是否正常? 或是出現找到不到哪個 TextBox的訊息?

本篇文章回覆於2019-11-14 23:59
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
作者回應

penny
檢舉此回應
Ader Chen
用你的程式碼檢查後 不會跳出msgbox 但是IN_() 是正常的,都有出現我要的數字
本篇文章回覆於2019-11-15 07:18
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
回應

P陳
檢舉此回應
4F 的少了A=A+1 所以只有檢查到 Textbox1 而已
另能否告知當程式有誤時 X 及 Y 各為多少嗎?

本篇文章回覆於2019-11-15 07:53
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
最有價值解答

Ader Chen
檢舉此回應


可能有部份(或全部) Texbox 是位於 Panel 或 GroupBox 等容器裡面,
所以樓主的 Controls("TextBox" & A) 找不到, 出現錯誤.
而 6樓的 Controls.Find(Key, True) 有找的, 正常.

https://docs.microsoft.com/zh-tw/dotnet/api/system.windows.forms.control.controlcollection.find
本篇文章回覆於2019-11-15 08:03
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
作者回應

penny
檢舉此回應
P陳大大 我X,Y出問題時是0,0
Ader Chen用Controls.Find(Key, True)可以用了!
但第一次使用這個語法 後面的(0)是指什麼
感謝你們的回答~
本篇文章回覆於2019-11-15 08:29
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
回應

Ader Chen
檢舉此回應

請參閱
https://docs.microsoft.com/zh-tw/dotnet/api/system.windows.forms.control.controlcollection.find

Controls.Find(Key, True) 傳回的是集合物件,
Controls.Find(Key, True)(0) 就是此集合物件的第一個物件.
通常不是只有一個就是空集合(找不到)


本篇文章回覆於2019-11-15 08:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
作者回應

penny
檢舉此回應
了解了 謝謝~
本篇文章回覆於2019-11-15 09:05
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
回應

P陳
檢舉此回應
奇了
4樓的 檢查應該就會找到問題的
ctl1=me.controls.find("Textbox" & A,True)
if ctl1.length=0 then (如果 FIND的結果是0 的話,應該會通知的,為何沒有通知?)
msgbox ("找不到 " & "Textbox" & A)
continue for
end if
本篇文章回覆於2019-11-15 12:58
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
14樓
作者回應

penny
檢舉此回應
都找的到的喔 只是因為我的TEXTBOX是放在GroupBox內部的,然後我下面接續的語法又是接我原本的Controls("TextBox" & A).Text所以他會一直出錯
然後改用Controls.Find("TextBox" & A, True)(0).TEXT就可以了
本篇文章回覆於2019-11-15 13:36
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
15樓
回應

P陳
檢舉此回應
A.ctl1=me.controls.find("Textbox" & A,True) <---- 瞭解了這句出問題 改成False 即可
另一個狀況

B.您 7 樓講有出現您要的數字
所以
IN_(X,Y)=Ctl(0).text 是對的

IN_(X,Y)=Controls("TextBox" & A).Text 則會報錯


本篇文章回覆於2019-11-15 19:19
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.