以前にこのコントロールを使用したことがありますが、非常に簡単でした。データ ソースにバインドされたデータ グリッド ビューがあります。バインディング ナビゲーター コントロールをフォームに追加し、データ グリッド ビューと同じバインディング ソースを使用するように設定します。データ グリッド ビューに表示される結果をフィルター処理するために使用するテキスト ボックスを追加し、ナビゲーターを変更して追加項目と削除項目を削除します。ナビゲーターに含まれるのはナビゲーション ボタンとテキスト ボックスだけです。グリッド内の行を選択するまではすべて正常に表示されます...ナビゲーターの行番号が正しい場合、フォームの上部全体にまたがるナビゲーション バー全体に大きな赤い「X」が表示されます。ここにスナップショットを含めました:
警告や例外は発生せず、例外がスローされるとデバッガーが中断するように設定されています。明らかな何かが欠けているように感じますが、フィルターが適切に機能し、行番号が常に正しいという点で、「機能」し続けています。これを修正するためのアドバイスをいただければ幸いです。データ グリッド ビューの選択の変更により、フォームの内容 (フォーム上の他のコントロール) が変更されますが、すべてが完全に機能します。
サンプル コードに関する限り、データ グリッド ビューとバインディング ナビゲーターの両方が、データ ソースとして追加された SQL ビューを使用します。
this.dgvSerial.DataSource = this.vwSerialBindingSource;
this.bindingNavigator1.BindingSource = this.vwSerialBindingSource;
次に、バインド ソースのフィルターを、バインド ナビゲーターにあるテキスト ボックスに設定します。
vwSerialBindingSource.Filter = string.Format("ProductName LIKE '%{0}%' OR LabelProductName LIKE '%{0}%' OR SerialNumber LIKE '%{0}%'", tb.Text);
埋め込みリソースとして読み込まれる画像を使用して、「検索ボタン」も追加します。
// setup the search button, the image is
// an embedded resource
bindingNavigator1.ImageList = new ImageList();
Assembly _assembly = Assembly.GetExecutingAssembly();
Stream _imageStream = _assembly.GetManifestResourceStream("SNReprint.search.png");
Image currentImage = Image.FromStream(_imageStream);
ToolStripButton searchButton = new ToolStripButton();
searchButton.Image = currentImage;
searchButton.Text = "Search";
searchButton.Font = new Font(searchButton.Font, FontStyle.Bold);
searchButton.BackColor = Color.Lavender;
// Add the button to the toolstrip
bindingNavigator1.Items.Add(searchButton);
影響を受けないビューの列にバインドされているフォームには、他のコントロールがたくさんあります。
他にどのコードを提供すればよいかわかりませんが、その多くはデザイナーが生成したものであり、アプリケーションの他のすべての側面は完全に機能します。この問題は、データ グリッド ビューの選択変更イベントが発生するまで発生しないため、バインディング ナビゲーターが正しくレンダリングされないように、このイベント ハンドラーで何かを行っていると想定する必要があります。
問題に光を当てる可能性のある私が提供できる具体的なものが他にある場合は、喜んで投稿します...