我在每个SuperValidator
类型的表单上都有一个名为SuperValidator1的控件。我想找到这个控件并使用它的名称启用它,因为名称在所有形式中都是一致的。所以这就是我提出的代码:
Dim validator As SuperValidator
Dim frm As Form = Me.ParentForm
Dim ctrl As Control()
ctrl = frm.Controls.Find("SuperValidator1", True)
Dim singleCtrl As Control = ctrl(0)
validator = TryCast(singleCtrl, SuperValidator) '< ERROR LINE
它引发编辑错误:Value of Type 'Control' cannot be converted to 'SuperValidator'
我尝试CType
和DirectCast
,但它是一样的。根据{{3}}我应该能够转换任何数据类型。什么是错的,我该怎么办?
btw SuperValidator
来自DevComponents.DotNetBar.Validator
感谢
答案 0 :(得分:1)
这是一个使用我在表单上的控件的测试。稍微改变了你的逻辑。试一试,看看你有什么结果。
import twitter4j.util.*;
import twitter4j.*;
import twitter4j.management.*;
import twitter4j.api.*;
import twitter4j.conf.*;
import twitter4j.json.*;
import twitter4j.auth.*;
import guru.ttslib.*;
import processing.serial.*;
TTS tts;
Serial myPort;
int sensor = 0;
void setup() {
tts = new TTS();
myPort = new Serial(this, Serial.list()[0], 9600);
}
void draw() {
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setOAuthConsumerKey("XXXX");
cb.setOAuthConsumerSecret("XXXX");
cb.setOAuthAccessToken("XXXX");
cb.setOAuthAccessTokenSecret("XXXX");
java.util.List statuses = null;
Twitter twitter = new TwitterFactory(cb.build()).getInstance();
String userName ="TWITTER HANDLE";
int numTweets = 19;
String[] twArray = new String[numTweets];
try {
statuses = twitter.getUserTimeline(userName);
}
catch(TwitterException e) {
}
if( statuses != null) {
for (int i=0; i<statuses.size(); i++) {
Status status = (Status)statuses.get(i);
if (sensor == 491310) {
println(status.getUser().getName() + ": " + status.getText());
tts.speak(status.getUser().getName() + ": " + status.getText());
}
}
}
}
void serialEvent (Serial myPort) {
int inByte = myPort.read();
sensor = inByte;
print(sensor);
}
答案 1 :(得分:1)
自SuperValidator
is a component以来,您必须从表单的组件集合中获取它。 然而在运行时组件似乎没有继承名称,因此找到确切的名称可能会很棘手。
据我所知,你唯一的选择是:
A)获取您可以找到的第一个SuperValidator
或
B)匹配其属性(如果可能)。
无论哪种方式,都必须遍历Me.components.Components
集合:
Dim validator As SuperValidator = Nothing
For Each component In Me.components.Components
If component.GetType() Is GetType(SuperValidator) Then
validator = DirectCast(component, SuperValidator)
'Perform additional property checking here if you go with Option B.
End If
Next