C# 无法将类型对象隐式转换为int error组合框

C# 无法将类型对象隐式转换为int error组合框,c#,C#,我最近从VB转换了这段代码,如何正确调用组合框cmb\u UserID string strQuery = ""; try { var val = 1; val = cmb_UserID.SelectedValue; strQuery = "select *from tbl_category where category_id=" + val.ToString + ""; cmb_UserID.DataSource = c.loadToComboBox(str

我最近从VB转换了这段代码,如何正确调用组合框
cmb\u UserID

string strQuery = "";
try
{
    var val = 1;
    val = cmb_UserID.SelectedValue;

    strQuery = "select *from tbl_category where category_id=" + val.ToString + "";

    cmb_UserID.DataSource = c.loadToComboBox(strQuery);
    cmb_UserID.ValueMember = c.loadToComboBox(strQuery).Columns["category_id"].ToString();
    cmb_UserID.DisplayMember = c.loadToComboBox(strQuery).Columns["category_name"].ToString();

}
catch (Exception)
{

}

由于
var val=1
赋值,变量
val
的类型为
int
SelectedValue
属性的类型为
object
,类型之间的差异会导致给定的异常

为了避免这种情况,您需要将
SelectedValue
显式转换为
int

val = (int)cmb_UserID.SelectedValue
更新: 如果要改用Int32.TryParse:

var val = 1;
Int32.TryParse(cmb_UserID.SelectedValue.ToString(), out val);

为什么首先声明
val
,然后立即为其分配不同的值?为什么不干脆
var val=cmb\u UserID.SelectedValue?请发表一篇文章,手头的代码存在太多问题,无法正确解决您的问题。SQL注入、未知方法、未知确切错误发生在何处、吞咽异常等。所有这些都告诉我,您是否知道问题发生在何处以及发生了什么问题是非常不确定的。在您了解这两件事之后,我们可以开始解决问题发生的原因。另外,你说你是从VB转换过来的,如果你不想发布一个,我们可以看看原始的VB代码吗?使用
val.ToString()
@PaulF:这是正确的,但会产生另一个错误,“运算符“+”不能应用于“string”和“method group”类型的操作数。没有足够的信息来检查错误,我知道你知道代码,这对你来说可能很明显,但是有很多问题。1.为什么要重估价值?2.什么是“c”?它的回报是什么?3.为什么要空catch?
Int32.TryParse()
是一个更好的选择。@MarkBaijens我同意,好的,我会尝试这样应用它?val=Int32.TryParse();val=cmb_UserID.SelectedValue;我很抱歉,我只是c的新手#