Абстрактный класс, конструкторы и Co

Вы можете использовать свойство Columns вашей таблицы данных, чтобы взаимодействовать со столбцами и скрывать ненужные столбцы.

datagrid.Columns.RemoveAt(IndexOftheColumn);

или если вы назвали свои столбцы

datagrid.Columns.RemoveAll(x => x.Name = "column name");

или если возможно, что вам понадобится столбец позже

datagrid.Columns[IndexOftheColumn].Visibility = Visibility.Collapsed;

Это также можно сделать с чистый Xaml с привязками, но так как вы новичок в Wpf, я бы посоветовал сначала сделать это в коде (.cs вашего элемента управления Wpf).

Что касается выбора столбцов, которые нужно скрыть, вы можете передать список имен столбцов, которые вы хотите удалить, в конструкторе элемента управления или с привязкой. Есть много способов сделать это.

Или вы можете сделать наоборот и динамически добавлять столбцы в зависимости от ваших потребностей.

Обратите внимание, что этот вопрос задавался ранее

.

7
задан John Saunders 31 December 2011 в 21:41
поделиться

8 ответов

Конструкторы не наследуются в C #. Вам нужно будет связать их вручную:

public TheServer(int port) 
 : base(port)
{
}

Также, если Start защищен, вам нужно будет создать какой-то открытый метод, который его вызывает:

public void StartServer()
{
    Start();
}
13
ответ дан 6 December 2019 в 07:52
поделиться

И, что бы это ни стоило, я бы порекомендовал использовать:

UDPServer serv = new TheServer(20501);
serv.start();

Или, возможно, даже более общий, Сервер. Зависит от того, какие методы нужно вызывать на серв.

0
ответ дан 6 December 2019 в 07:52
поделиться

Вашему производному классу необходимо добавить конструктор с одним параметром и делегировать его базовому классу:

 public TheServer(int port) : base(port) {}

Кроме того, защищен метод Start . Вам понадобится свой собственный:

public void StartMe(){base.Start();}
8
ответ дан 6 December 2019 в 07:52
поделиться

Вы не определили конструктор TheServer с одним аргументом, поэтому вы не можете вызвать TheServer (20501); вы не определили конструктор с нулевыми аргументами для UDPServer, но вы определили один с одним аргументом. Два ваших метода в TheServer защищены, поэтому ошибка # 2.

0
ответ дан 6 December 2019 в 07:52
поделиться
public class TheServer 
{   
    public TheServer():base(port) {
    }    
}

var myServer = new TheServer(1337).Brings().All().The().Boys().to().The().Yard()
0
ответ дан 6 December 2019 в 07:52
поделиться
  1. и 3.

Добавить конструктор в TheServer, который вызывает базовый конструктор (из UDPServer); как то так:

public TheServer(int port) : base(port) {}

2 Проверьте метод Start на UDPServer: он защищен. Это означает, что только подклассы этого класса могут вызывать его.

0
ответ дан 6 December 2019 в 07:52
поделиться

Вам нужно будет опубликовать код в своем классе Abstract, но по полной оценке,

У вас есть ctor в вашем классе UDPServer, который у вас нет не реализован в вашем классе TheServer ... Вам нужно что-то вроде ...

public TheServer(int port) : base(port)
{
   ... specifics
}

И вы также забыли переопределить метод Start () в своем классе TheServer но он помечен как закрытый в базовом классе ... Ваш базовый класс должен иметь что-то вроде ...

//In UDPServer
protected void Start()
{
   //Code to start
}

//In TheServer
protected void StartTheServer()
{
   base.Start();
}
0
ответ дан 6 December 2019 в 07:52
поделиться

Эти ошибки на самом деле имеют довольно простые причины:

  1. Вы не определили конструктор в своем производном классе ( TheServer ). Конструкторы (в отличие от методов, конечно) не наследуются автоматически, поэтому вам нужно объявить конструкторы, которые совпадают с вами, в родительском классе и объединить их в цепочку, используя что-то вроде:

     public TheServer (int port): base (port )
    {
     // Ваш код здесь.
    }
    
    public TheServer (): base ()
    {
     // Ваш код здесь.
    }
    
  2. Метод Start объявлен как защищенный в базовом ( UDPServer ) классе. Либо измените модификатор доступа в базовом классе на public , либо найдите способ вызова метода из производного класса, когда это необходимо (последний должен был быть предназначен автором UDPServer) ).

  3. Та же причина, что и 1, за исключением того, что она ссылается на конструктор по умолчанию (без параметров).

Надеюсь, это поможет.

2
ответ дан 6 December 2019 в 07:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: