如何让其他控件在自定义控件中看到 DataTables 的集合?

Posted

技术标签:

【中文标题】如何让其他控件在自定义控件中看到 DataTables 的集合?【英文标题】:How to make other controls see a collection of DataTables in a custom control? 【发布时间】:2021-04-12 09:26:54 【问题描述】:

我正在构建一个可以从工具箱拖到表单上的自定义组件。 它公开了一个 DataTable 类型的 List,到目前为止效果很好。

我缺少的是,当我将 BindingSource 放在同一个表单上时,在设计器中 BindingSource 看不到我的 DataTables 集合。所以我不能从自定义组件中选择一个 DataTables。我知道我可以在代码中做到这一点,但这不是我的想法,我想在设计器中做到这一点。

我怎样才能做到这一点?

DataTables的公共集合的代码是这样的

[Serializable]
public partial class gttDataModule : Component

    private List<DataTable> _dataTables = new List<DataTable>();


    public List<DataTable> DataTables
    
        get  return _dataTables; 
        set  _dataTables = value; 
    

DataTables 的集合被填充并填充了列和所有内容,另请参见附图。 除了 BindingSources 和其他可以接受 DataTable 作为 DataSource 的控件没有看到此集合之外,一切正常。 有没有办法做到这一点?

【问题讨论】:

【参考方案1】:

请点击DataSource->Other Data Sources->List Instances->选择您在自定义控件中添加的数据表,为bindingSouce控件设置datasource

【讨论】:

感谢您的回复,但很遗憾我的 DataTables 没有出现在 Other Data Sources 中。我的问题是如何完成它,这样他们就会出现在那里 @GuidoG,我用的是vs2019,看来你用的是vs2015。可以用vs2019来测试吗? 不,对不起,我这里只有 VS 2015。所以你是说它可以在 VS 2019 中工作?如果我确定这一点,我可以推动我的雇主最终升级 @GuidoG,根据我的测试,目前它在 vs2019 中运行良好。如果您的电脑无法使用vs2019,可以在虚拟机中测试。 你能详细说明you can test it in virtual machine我可以在虚拟机的某个地方获得VS 2019吗?或者你的意思是什么?

以上是关于如何让其他控件在自定义控件中看到 DataTables 的集合?的主要内容,如果未能解决你的问题,请参考以下文章

如何在自定义用户控件上创建单击事件?

如何在自定义嵌套用户控件中引用另一个 XAML 元素?

如何在自定义控件中屏蔽值

WebResource实现在自定义控件中内嵌JS文件

如何在自定义用户控件中为 ListBox ItemTemplate 属性设置适当的上下文

qt自定义控件样式在提升使用中不生效之坑