2011-01-23 4 views
-1

私はこのコードを書いたが、私はそれを実行すると、デバッガは私に "DragDrop登録が成功しなかった"というメッセージを表示する。 FormAdver.show();どのように私はそれを修正することができますライン?フォームの表示での問題

public void ResiveFunc(string FuncResive) 
    { 


     string FuncName = ""; 
     string FuncValue = ""; 
     for (int i = 0; i <= 2; i++) 
     { 
      FuncName += FuncResive[i]; 
     } 
     for (int j = 4; j <= FuncResive.Length - 1; j++) 
     { 
      FuncValue += FuncResive[j]; 
     } 
     MessageBox.Show(FuncName); 
     MessageBox.Show(FuncValue); 
     if (FuncName == "TAB") 
     { 
      Form1 mainForm = new Form1(); 
      frmAddver formAddver = new frmAddver(); 
      formAddver.Show(); 
      mainForm.AdverFilter(FuncValue); 

     } 
    } 
+0

可能重複これは単なる再ハッシュされ(http://stackoverflow.com/questions/4769915/problem-with-multi-threaded-invocation) –

+1

あなたの前の質問の質問を繰り返すことができますが、私はmainFormなどについての質問を繰り返すことができますが、あなたはそれらを再び無視するだけです。 –

+0

小さな改善:文字列の代わりにオブジェクトを渡すことを検討してください: 'class Func {public string Name {get; set;} public string Valueあなたのメソッドに 'public void ReceiveFunc(Func func)'を渡します。{public void ReceiveFunc(Func func) '{ –

答えて

0

次の2つのオプション

  1. を持っていることを確認AllowDrop

  2. は、アパートメント状態がSTAに設定されていることを確認しFormAdver

    のコントロールにfalseであることを確認してください。 Thread.CurrentThread.ApartmentState = ApartmentState.STAまたは[STAThread]属性を使用してください。

[マルチスレッド/呼び出し通報:(]の