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