Изменение размеров единственного управления в WinForms

В компоненте Button измените

const{onclick,className='',children}=props;

на

const{onClick,className='',children}=props;

Также кажется, что вы не установили список в состоянии, поэтому при попытке доступа к this.state.list. Фильтр выдаст ошибку.

onDismiss=(id)=>{    
  const deleteList=this.state.result.hits.filter(item=>item.objectID!==id);    
  this.setState({
  result:{...this.state.result,hits:deleteList}
})  

}

12
задан THE DOCTOR 21 April 2009 в 15:46
поделиться

5 ответов

Существует два основных способа управления автоматически изменяет размер в зависимости от изменения размера родительского контейнера (форма в вашем случае):

  1. Установите для свойства Dock элемента управления значение DockStyle.Fill.
  2. Установите для свойства Anchor значение «Top, Bottom, Left, Right».

Используйте свойство Dock с Dock.Fill.

Преимущество этого метода состоит в том, что он берет весь элемент управления и говорит ему всегда заполнять всю клиентскую область родительского контейнера (в вашем случае, клиентскую область Form) , Это полезно, если вы хотите сделать что-то вроде заполнения формы с помощью ListControl или TreeView или чего-то подобного. Но это не так полезно, если вы хотите масштабировать один элемент управления при использовании других элементов управления (как вы указали, это ваша потребность). В таком случае, вам нужно было бы установить свойство Dock в этих других элементах управления на DockStyle.Top или DockStyle.Bottom, чтобы они плавали выше или ниже вашего основного элемента управления изменением размера.

Это хлопотно, а также ограничивает параметры макета других элементов управления. Вы можете решить эту проблему, установив два элемента управления Panel, один сверху, а другой внизу формы. Эти панели останутся в фиксированных положениях, в то время как средняя область (с вашим элементом управления DockStyle.Fill) масштабируется с родительской формой. Затем вы можете поместить любые элементы управления в любой конфигурации макета в эти панели «верхний и нижний колонтитулы».

Этот вид составного формостроения с использованием закрепленных панелей невероятно мощный. Откровенно говоря, это было изменение игры в .NET, когда они представили это с .NET 1.0 WinForms.

Используйте свойство Anchor с "Top, Bottom, Left, древовидный элемент управления или многострочное текстовое поле.

Для того, что вам нужно, не связывайтесь с AutoSize или AutoSizeMode ... эти свойства управляют тем, как элемент управления изменяет размер в зависимости от его собственного содержимого, а не как его размер изменяется в зависимости от его размера. поведение контейнера. Думайте о режиме AutoSize / AutoSize как о внутреннем взгляде, в то время как Anchor / Dock смотрят наружу. Вы получаете очень странное поведение, если используете оба метода определения размера одновременно. Обычно не полезно.

Вы получаете очень странное поведение, если используете оба метода определения размера одновременно. Обычно не полезно.

Вы получаете очень странное поведение, если используете оба метода определения размера одновременно. Обычно не полезно.

24
ответ дан 2 December 2019 в 04:17
поделиться

Прикрепите ListView ко всем четырем сторонам формы, а остальные элементы управления - к 2 или менее.

6
ответ дан 2 December 2019 в 04:17
поделиться

В элементах управления есть свойство «Якорь» (в категории «Макет»), если для этого параметра установлено значение «Вверх». , Bottom, Left, Right "он будет поддерживать поля между элементом управления и его родительским контейнером, вызывая его изменение размера при изменении размера контейнера.

Но если активирован только один из якорей вдоль одной оси (например, «влево», но не «вправо»), он вместо этого будет перемещать элемент управления, опять же, сохраняя заблокированные поля между элементом управления и его контейнером.

: именно то, что сказал Джеймс, за исключением того, что это свойство «Якорь», а не «Док». Док похож, но не точно такой же.

3
ответ дан 2 December 2019 в 04:17
поделиться

ЕСЛИ вы поместили ListView в одну панель SplitContainer и поместили остальные элементы управления в другую панель, вы можете ограничить рост второй панели путем установки min и maxsize.

Если ваш ListView пристыкован к Full, тогда при изменении размера формы потребуется все увеличение.

1
ответ дан 2 December 2019 в 04:17
поделиться

Что делать, если в форме несколько элементов управления?

Например: если форма используется для создания некоторого результата в сетке относительно данных, введенных в несколько текстовых полей или полей со списком и т. д.; И мы хотим, чтобы они соответствующим образом изменяли размер/выравнивались и не перекрывали друг друга (как это происходит при использовании заливки стыковки), особенно с видом сетки или подобным элементом управления в контексте. alt text

1
ответ дан 2 December 2019 в 04:17
поделиться
Другие вопросы по тегам:

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