Как использовать метод, который находится в частичном классе из другого частичного класса - PullRequest
0 голосов
/ 26 сентября 2019

Я работаю в файле Excel с Visual Studio и программирую на C #.Я добавил элемент управления списком на лист Seismic2D.Я хочу заполнить этот список информацией, которая находится в листе FileList.Кнопка, которую я пытаюсь запрограммировать, находится на ленте.

Я пытался использовать Sis2D clase = new Sis2D ();но я получил ошибку (Нет аргумента, который соответствует необходимому формальному параметру 'factory' Sis2D.Sis2D (Factory, IServiceProvider)

В файле ленты ...

public partial class Ribbon1
    {
       private void ListRefresh_Click(object sender, RibbonControlEventArgs e)
       {
           Excel.Worksheet wsFL = Globals.ThisWorkbook.Worksheets["FileList"];
           Sis2D clase = new Sis2D();
           clase.ListaFiles.Items.Add(wsFL.Range["A2"]);
           clase.ListaFiles.Items.Add(wsFL.Range["A3"]);
        }
    }

В файле Sis2D.cs

public partial class Sis2D

Ещё я пытался добавить это в Sis2D

public partial class Sis2D
{
public void LlenaListBox()
        {
           Excel.Worksheet wsFL = Globals.ThisWorkbook.Worksheets["FileList"];
           ListaFiles.Items.Add(wsFL.Range["A2"].Value);
           ListaFiles.Items.Add(wsFL.Range["A3"].Value);
        }
}

Но я не знаю, как вызвать этот метод из частичной лентыкласс.

Я хочу иметь возможность взаимодействовать с ListBox, добавлять элементы и читать их.

Ответы [ 2 ]

0 голосов
/ 27 сентября 2019

Сначала я хочу сказать спасибо за вашу помощь и интерес, чтобы помочь мне.Я хочу извиниться, если, возможно, мне не ясен мой вопрос, потому что я новичок.Наконец, то, что я хотел, заполнив ListBox внутри листа из Visual Studio с помощью C #, я получил.

На ленте код кнопки:

C#
public partial class Ribbon1
{
private void FL_Click(object sender, RibbonControlEventArgs e)
   {
       Sis2D s = Globals.Sis2D;
       s.LlenaListBox();   
   }
}

Влист, код:

public partial class Sis2D 
{
public void LlenaListBox()
    {
            Excel.Worksheet wsFL = Globals.ThisWorkbook.Worksheets["Sheet1"];
            ListaF.Items.Add(wsFL.Range["A10"].Value);
            ListaF.Items.Add(wsFL.Range["A11"].Value);
            ListaF.Items.Add(wsFL.Range["A12"].Value);
    }
}

Это все.ListaF - это ListBox, добавленный к sheet1 в лист из C # в Visual Studio.На следующем рисунке показано, как выглядит лист: введите описание изображения здесь

0 голосов
/ 27 сентября 2019

Ошибка «Нет аргумента, соответствующего необходимому формальному

параметру« factory »из Sis2D.Sis2D (Factory, IServiceProvider)», означает, что у вас есть только

следующий конструктор в классе Sis2D.

 public Sis2D(Factory, IServiceProvider)
        {
         ////////////

        }

Если вы хотите получить доступ к методу в Sis2D, вы можете добавить пустой конструктор в класс Sis2D.Например:

   public partial  class Sis2D
   {
    public Sis2D()  //  you need to add this code
    {
    }
    public void LlenaListBox()
    {
        Excel.Worksheet wsFL = Globals.ThisWorkbook.Worksheets["FileList"];
        ListaFiles.Items.Add(wsFL.Range["A2"].Value);
        ListaFiles.Items.Add(wsFL.Range["A3"].Value);
    }
    }

Затем вы можете использовать следующий код для доступа к методу без исключения:

public partial  class Ribbon1
    {
        public void ListRefresh_Click()
        {
            Sis2D clase = new Sis2D();
            clase.LlenaListBox();

        }
    }
...