我以前使用过这个控件,它非常简单。我有一个绑定到数据源的数据网格视图。我将绑定导航器控件添加到表单并将其设置为使用与数据网格视图相同的绑定源。我添加了一个文本框,我用它来过滤出现在数据网格视图中的结果,并修改导航器以删除添加和删除项目,因此它只包含导航按钮和文本框。一切看起来都很好,直到我在网格中选择一行......虽然导航器中的行号是正确的,但有一个大的红色“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);
表单上有许多其他控件绑定到视图中不受影响的列。
我不确定我应该提供哪些其他代码,其中大部分是设计器生成的,并且应用程序的每个其他方面都可以完美运行。由于在引发数据网格视图选择更改事件之前不会出现此问题,因此我必须假设我正在此事件处理程序中执行某些操作以导致绑定导航器无法正确呈现。
如果我可以提供任何其他具体的信息,可能会对问题有所了解,我非常乐意发布它......