我是一个学习C#的VB人。我似乎已经掌握了它,但我对我正在写的一些代码有几个问题。
在第一个这里,当我编写代码时出现错误:
Irowindex = sF1411BindingSource.Find(sF1411DataSet.SF1411.Columns(groupBox4.Tag.ToString).ToString, textBox1.Text);
if (Irowindex == -1)
错误1'System.Data.DataTable.Columns'是'属性',但用作'方法'C:\ 11180_APPLICATION \ 11180_APPLICATION \ Edit.cs 186 71 11180_APPLICATION
我的另一个问题是在VB中我使用了标签,但在C#中它似乎不喜欢它们:
//Set the find label to display the new find column
groupBox4.Text = "Find - " + sender.Tag.ToString + ":";
//Store the sort column name in lblFind's Tag property
groupBox4.Tag = sender.Tag.ToString;
错误4'object'不包含'Tag'C的定义:\ 11180_APPLICATION \ 11180_APPLICATION \ Edit.cs 211 36 11180_APPLICATION
这里有什么想法吗?
答案 0 :(得分:3)
尝试Columns[groupBox4.Tag.ToString()]
第一个错误。
关于标记,在C#中,发送者是Object类型,并且它没有标记属性。首先尝试将其转换为Control:
((Control)sender).Tag
答案 1 :(得分:2)
您需要使用方括号的C#语法替换索引访问器(在VB .Columns(...)中)。
.Columns[...]
就其他错误而言。听起来你的控件被输入为Object(在VB中后期绑定)。您需要更改控件定义以使用完整类型(或至少使用Control)...或强制转换为Control
答案 2 :(得分:2)
到处使用ToString()
代替ToString
。它是一种方法。
此外,Columns是一个集合,通过索引进行访问,在这种情况下,您需要使用 []而不是()
答案 3 :(得分:2)
.ToString后面应该有括号。
foo.ToString()
答案 4 :(得分:2)
所有方法调用都应该()
,例如ToString()
所有索引者都应[]
w.g .Columns[...]
此外,您可能需要输入发件人的案例,如((TextBox)sender).Text
答案 5 :(得分:1)
对于您的第二个问题,sender
可能是某个事件处理程序的参数...
protected void HandlerName(object sender, EventArgs e) { ... }
如果是这种情况,并且您希望将发件人用作其他类,那么您需要像这样强制转换它:
YourClass mySender = sender as YourClass;
if (mySender != null) {
// Do your handling here
}
按照以下@ gabrielVa的评论,修改后的代码为:
private void radioButton1_CheckedChanged(object sender, EventArgs e){
RadioButton radioSender = sender as RadioButton;
if (radioSender != null){
sF1411BindingSource.Sort = radioSender.Tag.ToString();
sF1411BindingSource.MoveFirst();
//Set the find label to display the new find column
groupBox4.Text = "Find - " + radioSender.Tag.ToString() + ":";
//Store the sort column name in lblFind's Tag property
groupBox4.Tag = radioSender.Tag.ToString();
textBox1.ReadOnly = false;
}
}
答案 6 :(得分:0)
你需要方括号(索引器)。我[ ]
而非( )
。