Как вывести список всех элементов barButton в форме mdichild из mdiparent RibbonForm? - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь перечислить внутри gridcontrol в форме mdichild, загруженной в xtraTabbedMdiManager1, все barButtonItems из ленточных страниц в mdiparent RibbonForm.

DataTable dt = new DataTable();
dt.Clear();
dt.Columns.Add("ID");
dt.Columns.Add("PAGE");
dt.Columns.Add("GROUP");
dt.Columns.Add("BARBUTTON");
DataRow dr;
RibbonControl parentRibbon = ((RibbonForm)this.MdiParent).Ribbon;
RibbonPageGroup group = parentRibbon.Pages.GetPageByName("ribbonPage1").Groups.GetGroupByText("ribbonPageGroup4");            
foreach (DevExpress.XtraBars.BarButtonItem item in parentRibbon.Controls)
{
dr = dt.NewRow();
dr["BARBUTTON"] = item.Name;
dt.Rows.Add(dr);
}
gridControl1.DataSource = dt;

Но он не запускается.Это показывает мне эту ошибку System.NullReferenceException.Пожалуйста, помогите мне.Заранее спасибо.enter image description here

1 Ответ

0 голосов
/ 30 января 2019

попробуйте это:

ItemLinks предоставит вам полный доступ BarButtonItem.Вы можете прочитать эту статью для получения дополнительной информации: https://documentation.devexpress.com/WindowsForms/DevExpress.XtraBars.BarButtonItemLink.class

Пожалуйста, помните, что Form1 - это родительская форма, а ribbonControl1 - родительский элемент управления ленты.

    DataTable dt = new DataTable();
    dt.Clear();
    dt.Columns.Add("ID");
    dt.Columns.Add("PAGE");
    dt.Columns.Add("GROUP");
    dt.Columns.Add("BARBUTTON");
    DataRow dr;
    XtraForm frm = (XtraForm)Application.OpenForms["Form1"];
    RibbonControl parentRibbon = (RibbonControl)frm.Controls["ribbonControl1"];
    List<BarItemLink> var = parentRibbon.Pages.GetPageByName("ribbonPage1").Groups.GetGroupByText("ribbonPageGroup1").ItemLinks.ToList();
    foreach (DevExpress.XtraBars.BarItemLink bar in var)
    {
        dr = dt.NewRow();
        dr["BARBUTTON"] = bar.Caption; // bar.Item.Name; // bar.DisplayCaption;
        dt.Rows.Add(dr);
    }
...