0

C:\ Users \ AppData \ Local \ Microsoft \ VisualStudio \ x.0から.tbdファイルを削除することで、この問題やバグを修正する試みをたくさん試みました。ツールボックスの項目がVS 2010でグレー表示される

Visual Studioの「ツール」メニュー 「オプション」サブメニュー 「Windowsフォームデザイナ」タブ 「全般」タブ セット「AutoToolboxPopulate」に「真」

ツールボックスのリスト:

は私もこれを試してみましたまだ正しく配置されておらず、 "BackgroundWorker"コンポーネントI必要がグレー表示されます。何か案は?

+0

(リンク先の)スクリーンショットを投稿できますか?それはあなたが逃した何かを示すかもしれません。 – ChrisF

+0

プロジェクトタイプを文書化する必要があります。 1つの修正は、ツールボックスを右クリックして[リセット]をクリックすることです。 –

+0

@ChrisF、ここにリンクがあります:http://dl.dropbox.com/u/14305935/BGW.png –

答えて

1

私はせずにC#でBackgroundWorkerクラスを使用して、私の問題への解決策を発見しましたツールボックスのコンポーネントを使用します。私は、ツールボックスの項目をリセットしようと

using System.Threading; 

public partial class MainWindow : Window 
    { 
     private BackgroundWorker bw1 = new BackgroundWorker(); 
     private BackgroundWorker bw2 = new BackgroundWorker(); 

     public MainWindow() 
     { 
      InitializeComponent(); 

      bw1.WorkerReportsProgress = true; 
      bw1.DoWork += new DoWorkEventHandler(bw1_DoWork); 
      bw1.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw1_RunWorkerCompleted); 
      bw1.ProgressChanged += new ProgressChangedEventHandler(bw1_ProgressChanged); 

      bw2.WorkerReportsProgress = true; 
      bw2.DoWork += new DoWorkEventHandler(bw2_DoWork2); 
      bw2.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw2_RunWorkerCompleted); 
      bw2.ProgressChanged += new ProgressChangedEventHandler(bw1_ProgressChanged); 
     } 


     private void bw1_DoWork(object sender, DoWorkEventArgs e) 
     { 
      StatsProcessor proc = new StatsProcessor(); 
      proc.CompareStats(listText1, listText2);  
     } 

     private void bw2_DoWork2(object sender, DoWorkEventArgs e) 
     { 
      StatsParser parser = new StatsParser(); 
     } 

     private void bw1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 
     { 
      progressBar2.IsIndeterminate = false; 
      progressBar2.Value = 100; 

      btnCompareStats.IsEnabled = true; 

     } 

     private void bw2_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 
     { 
      progressBar1.IsIndeterminate = false; 
      progressBar1.Value = 100; 

      btnFetchStats.IsEnabled = true; 
     } 

     private void bw1_ProgressChanged(object sender, ProgressChangedEventArgs e) 
     { 
      this.progressBar2.Value = e.ProgressPercentage; 
     } 

     private void bw2_ProgressChanged(object sender, ProgressChangedEventArgs e) 
     { 
      this.progressBar1.Value = e.ProgressPercentage; 
     } 

     private void btnCompare_Click(object sender, EventArgs e) 
     { 
      btnCompareStats.IsEnabled = false; 

      StatsProcessor proc = new StatsProcessor(); 

      if (bw1.IsBusy != true) 
        { 
         progressBar2.IsIndeterminate = true; 

         // Start the asynchronous operation. 
         bw1.RunWorkerAsync(); 
        }  

     } 

     private void btnFetchStats_Click(object sender, RoutedEventArgs e) 
     { 
      btnFetchStats.IsEnabled = false; 

      if (bw2.IsBusy != true) 
       { 
         progressBar1.IsIndeterminate = true; 

         // Start the asynchronous operation. 
         bw2.RunWorkerAsync(); 
       } 
     } 
} 
1

は、少なくとも回避策:コードでBackgroundWorkerを宣言しますが、それを適切に処分することを忘れないでください:

public class MyForm : Form 
{ 
    private BackgroundWorker bgWorker = null; 

    public MyForm() 
    { 
    InitializeComponent(); 

    this.bgWorker = new BackgroundWorker; //TODO: set properties and event handlers 
    } 

    public override void Dispose(bool disposing) 
    { 
    //TODO: copy from MyForm.Designer.cs and add: 
    Backgroundworker bgw = this.bgWorker; 
    this.bgWorker = null; 
    if (disposing && bgw != null) 
    { 
     try 
     { 
     //TODO: release event handlers 
     bgw.Dispose(); 
     } 
     catch(Exception) 
     { 
     /* consumed disposal error */ 
     } 
    } 
    } 
} 
+0

しかし、WPFフォームにコンポーネントを追加することはできません。したがって、backgroundWorker1_DoWork()およびbackgroundWorker1_RunWorkerCompleted()を実装するにはどうすればよいですか? –

+1

イベントをコードに登録するだけで済みます(例: bgw.DoWork + =新しいSystem.ComponentModel.DoWorkEventHandler(bgw_DoWork);メソッドprivate void DoWorkEventHandler(object sender、DoWorkEventArgs e){...} – eFloh

+0

以下のコードは、上記で作成したものを正確に使用しているようですが、この場合、投票ボタンを使用して私に名誉を与えてくれますか? ;) – eFloh

0

:この場合、私は2つの別々のbackgroundWorkersを必要としていました。次に、[項目の追加]ダイアログを使用して必要なものを戻します。

関連する問題