2015-10-21 3 views
0

У меня есть следующая строка кодаНевозможно преобразовать тип источника «System.Web.UI.Control» целевого типа «System.Web.UI.WebControls.TextBox»

objCustomField = FindControl(oList.ID.Replace("ddl", "txt")); 

Я унаследовал эту страницу из устаревшее приложение, написанное на Visual Basic .net, и я конвертирую его в C#.

Эта специфическая линия выдает эту ошибку:

Cannot convert source type 'System.Web.UI.Control' to target type 'System.Web.UI.WebControls.TextBox'

Это вся рутина, что она содержится в:

private void PopulateDecodeDropDown(ref DropDownList oList, string vListItems, int vValueIndex, int vTextIndex, string vSelectedValue, string vCustomText , ref TextBox oCustomField, bool vIncludeBlank = true, string vBlankText = "", string vBlankValue = "") 
    { 


     TextBox objCustomField = default(TextBox); 
     ListItem objItem = default(ListItem); 
     string[] arItems = vListItems.Split(Convert.ToChar("|")); //added syntax to convert from string to Char 10/21/15 Max // 


     oList.Items.Clear(); 


     if (vIncludeBlank == true) 
     { 
      objItem = new ListItem(); 
      var _with7 = objItem; 
      objItem.Value = vBlankValue; 
      objItem.Text = vBlankText; 
      oList.Items.Add(objItem); 
     } 

     if (!string.IsNullOrEmpty(vCustomText)) 
     { 
      objItem = new ListItem(); 
      var _with8 = objItem; 
      objItem.Value = "-1"; 
      objItem.Text = vCustomText; 
      oList.Items.Add(objItem); 
     } 

     for (n = 0; n <= arItems.Count() - 1; n++) 
     { 
      objItem = new ListItem(); 
      var _with9 = objItem; 
      objItem.Value = mobjFormat.StripObjectToString(arItems[n]); //added square brackets to arItems to facilitate array 10/21/15 Max // 
      objItem.Text = mobjFormat.StripObjectToString(arItems[n]); //added square brackets to arItems to facilitate array 10/21/15 Max // 
      oList.Items.Add(objItem); 
     } 

     try 
     { 
      //set the value 
      oList.SelectedValue = vSelectedValue; 

      //if for some reason the value selected is different then 
      //we need to show custom something when wrong 
      if (oList.SelectedValue != vSelectedValue) 
      { 

       if (!string.IsNullOrEmpty(vCustomText)) 
       { 
        objCustomField = FindControl(oList.ID.Replace("ddl", "txt")); 
        //DropDownList objCustomField = (DropDownList) FindControl(oList.ID.Replace("ddl", "txt")); 
        oList.SelectedValue = "-1"; //added double quotes to facilitate conversion to string 10/21/15 Max // 
        oCustomField.Text = vSelectedValue; 
        oCustomField.Style.Add("display", ""); //changed to c# syntax 10/21/15 Max // 
       } 
       else 
       { 
        objItem = new ListItem(); 
        var _with10 = objItem; 
        objItem.Value = Strings.Trim(arItems(vSelectedValue)); 
        objItem.Text = Strings.Trim(arItems(vSelectedValue)); 
        oList.Items.Add(objItem); 
       } 


      } 

     } 
     catch (Exception ex) 
     { 

      if (!string.IsNullOrEmpty(vCustomText)) 
      { 
       objCustomField = FindControl(oList.ID.Replace("ddl", "txt")); 
       oList.SelectedValue = -1; 
       oCustomField.Text = vSelectedValue; 
       oCustomField.Style.Item("display") = ""; 
      } 
      else 
      { 
       objItem = new ListItem(); 
       var _with11 = objItem; 
       objItem.Value = Strings.Trim(arItems(vSelectedValue)); 
       objItem.Text = Strings.Trim(arItems(vSelectedValue)); 
       oList.Items.Add(objItem); 
      } 

     } 

    } 

Я знаю, что есть несколько других синтаксических ошибок в этом, как хорошо, но это ошибка для меня новая. Кто-нибудь сталкивался с этой ошибкой или, возможно, могли бы объяснить мне

ответ

1

FindControl() возвращает ссылку типа Control. Управление является базовым словом TextBox, поэтому вы можете легко использовать литой тип:

objCustomField = (TextBox) FindControl(oList.ID.Replace("ddl", "txt")); 
+0

Это был Хенк. Спасибо за помощь и объяснение. Спасибо. – MaximusPrime

1

Вы должны отбрасывать как этот

objCustomField = (TextBox)FindControl(oList.ID.Replace("ddl", "txt")); 
Смежные вопросы