C#关于从VB重写的问题

时间:2010-09-28 12:39:48

标签: c#

我是一个学习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

这里有什么想法吗?

7 个答案:

答案 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)

你需要方括号(索引器)。我[ ]而非( )

相关问题