2016-04-28 17 views
-1

私は、クラスのリストと3 ComboBoxを記入しようとしていますが、それはエラーを与えている:C#Form.show()エラーのSystem.InvalidOperationException

An unhandled exception of type 'System.InvalidOperationException' occurred in System.Windows.Forms.dll

"System.InvalidOperationException: This operation cannot be performed while an auto-filled column is being resized"

このエラーが時折起こるが、起こることを失敗することはありません。

Catalogo form = new Catalogo(); 
form.Show(); 

そして、これはコードの形である:

private void btSair_Click(object sender, EventArgs e) 
{ 
    DialogResult var; 
    var = MessageBox.Show("Deseja fechar esta janela ? ", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question); 
    if (var == DialogResult.Yes) 
    { 
     GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced); 
     this.Close(); 
    } 
} 

private void Catalogo_Load(object sender, EventArgs e) 
{ 
    cliente = new KEYSERVICEClient(); 
    List<Catalogo> asdf = new List<Catalogo>(); 

    var listar = cliente.FillCombosCatalogo(Global.Id_empresa); 

    for (int i = 0; i < listar.Count; i++) 
    { 
     cbFabricante.Items.Add(listar[i].fabricante); 
     cbModelo.Items.Add(listar[i].modelo); 
     cbNumera.Items.Add(listar[i].numeracao); 
    } 
} 

FillComboCatalogo方法:form.Show();

コードへ

そして、この時点

public List<CatalogoItens> FillCombosCatalogo(int id_empresa) 
{ 
    SqlDataReader objReader; 
    SqlCommand objcmd = null; 

    vsql = "SELECT [ID_EMPRESA], [MODELO], [FABRICANTE],[NUMERACAO] As Identificador,[MODELO],[FABRICANTE], [NUMERACAO] FROM PRODUTOS_CHAVES WHERE @ID_EMPRESA = ID_EMPRESA"; 

    List<CatalogoItens> catag = new List<CatalogoItens>(); 

    if (this.Conectar()) 
    { 
     try 
     { 
      objcmd = new SqlCommand(vsql, objCon); 

      objcmd.Parameters.Add(new SqlParameter("@ID_EMPRESA", id_empresa)); 

      objReader = objcmd.ExecuteReader(); 

      while (objReader.Read()) 
      { 
       CatalogoItens catalogo = new CatalogoItens() 
       { 
        modelo = (objReader.GetString(1)), 
        fabricante = (objReader.GetString(2)), 
        numeracao = (objReader.GetString(3)) 
       }; 
       catag.Add(catalogo); 
      } 
       return catag; 
     } 
     catch 
     { 

     } 
     finally 
     { 
      this.Desconectar(); 
     } 
    } 
    return null; 
} 
+0

ちょっと不思議なことに、なぜGCを収集するのですか?また、私は 'FillCombosCatalogo()'のコードを提供してください –

+0

私はきれいにするために使用しています。 –

+1

GCコレクションを強制する必要はありません。それはすべて自動的に処理され、それが間違っているのであれば処理されます。 –

答えて

0

したい場合chコンボボックスアイテムを追加し、それらの多くを(ループ内で)追加するには、常にSuspend/ResumeLayoutを使用します。すべての項目を追加した後に - あなたはそれをしない場合は

例:。:

cbFabricante.SuspendLayout(); 
cbModelo.SuspendLayout(); 
cbNumera.SuspendLayout(); 
for (int i = 0; i < listar.Count; i++) 
{ 
    cbFabricante.Items.Add(listar[i].fabricante); 
    cbModelo.Items.Add(listar[i].modelo); 
    cbNumera.Items.Add(listar[i].numeracao); 
} 
cbFabricante.ResumeLayout(); 
cbModelo.ResumeLayout(); 
cbNumera.ResumeLayout(); 

は、システムが毎回アイテムを追加するのではなく、一度それを再描画コンボボックスを再描画します。

例外の原因になっている可能性があります。これは助けにならないでしょう。それらのコンボボックスに設定したパラメータを私たちに提供してください。

+0

hummその作業なし –

+0

@MatheusSaviczkiそう、コンボボックスのプロパティは何ですか? – Carnifex

+0

元のプロパティ。 DropDownStyleをDropDownListに変更するだけです。 –

関連する問題