Слегка измененная версия ответа от Будидино. Эта реализация также правильно обрабатывает отрицательные posX и posY.
extension UIImage {
func overlayWith(image: UIImage, posX: CGFloat, posY: CGFloat) -> UIImage {
let newWidth = posX < 0 ? abs(posX) + max(self.size.width, image.size.width) :
size.width < posX + image.size.width ? posX + image.size.width : size.width
let newHeight = posY < 0 ? abs(posY) + max(size.height, image.size.height) :
size.height < posY + image.size.height ? posY + image.size.height : size.height
let newSize = CGSize(width: newWidth, height: newHeight)
UIGraphicsBeginImageContextWithOptions(newSize, false, 0.0)
let originalPoint = CGPoint(x: posX < 0 ? abs(posX) : 0, y: posY < 0 ? abs(posY) : 0)
self.draw(in: CGRect(origin: originalPoint, size: self.size))
let overLayPoint = CGPoint(x: posX < 0 ? 0 : posX, y: posY < 0 ? 0 : posY)
image.draw(in: CGRect(origin: overLayPoint, size: image.size))
let newImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
return newImage
}
}
Если вы никогда не хотите, чтобы это свойство отображалось:
class MyObject
{
public string Property1 { get; set; }
[Browsable(false)]
public string Property2 { get; set; }
}
В противном случае, как уже говорилось, установите для AutoGenerateColumns
значение false и добавьте их вручную.
похоже, что для свойства AutoGenerateColumns вашего элемента управления DataGridView установлено значение True. Вы можете установить для него значение False или использовать метод .Columns.Remove, чтобы удалить столбец, который вы не хотите видеть.
Я считаю, что вам нужно настроить столбцы вручную, как сказал Хенк. Однако вы можете захотеть установить больше свойств, чем в его примере. Вот что я сделал в своем проекте:
DataGridView dataGridView = new DataGridView();
dataGridView.AutoGenerateColumns = false;
DataGridViewColumn columnA = new DataGridViewTextBoxColumn();
columnA.DataPropertyName = "propertyA";
columnA.HeaderText = "Column A";
columnA.Name = "columnA";
DataGridViewColumn columnB = new DataGridViewTextBoxColumn();
columnB.DataPropertyName = "propertyB";
columnB.HeaderText = "Column B";
columnB.Name = "columnB";
dataGridView.Columns.Clear();
dataGridView.Columns.Add(columnA);
dataGridView.Columns.Add(columnB);
dataGridView.AutoResizeColumns();
Я считаю, что вышесказанное работает. Если вы получите странное исключение, убедитесь, что для столбцов / ячеек определены стили ячеек по умолчанию.