C # .net framework- граница только на одной стороне формы

StackOverflow https://stackoverflow.com/questions/1408225

  •  05-07-2019
  •  | 
  •  

Вопрос

Я неопытный программист , совершенно новичок в программировании для Windows .

Я пишу небольшую программу , о которой всегда мечтал .Он написан на C # с использованием .net Framework.по крайней мере, это то, что я думаю, что делаю.Все эти разговоры о framework и .nets , Windows forms и win32 api меня по-настоящему сбили с толку..:(

в любом случае, у меня есть простой объект Формы.

 Form f = new Form() ;
 f.Text = "" ;   
 f.ControlBox =false ;

Теперь, как удалить все границы формы, кроме одной стороны?Например, боковые границы должны исчезнуть, но верхняя граница должна остаться

В FormBorderStyle для этого ничего нет

Кроме того , как вы , люди , решаете такие проблемы сами , не спрашивая ?посмотреть на чужой код ?почитал книгу ?какой - то конкретный веб - сайт ?Я погуглил, но ничего не нашел.

Это было полезно?

Решение

Головокружительный день,

К сожалению, это невозможно - однако вы можете удалить всю границу целиком, а затем нарисовать свою собственную на форме и использовать OnMouseDown, OnMouseUp и OnMouseMove для самостоятельного перетаскивания...

Чтобы решить такую проблему самостоятельно, я бы рассмотрел различные способы вербального представления проблемы (например."форма без полей", "пользовательские границы в winform" и т.д.) и потратьте немного времени на поиск этого в Google.Как мудро заметил мой босс, производительность зависит не только от того, сколько кода вы сокращаете, но и от того, чему вы можете научиться.

Редактировать:Как гласит популярное выражение, "Google знает все" - скорее всего, если вы потратите немного времени на поиск в Google и все равно ничего не сможете найти, то проблема, вероятно, не решена или встречается очень-очень редко.Другим способом было бы вложить деньги в несколько хороших книг, напримерПрограммирование Windows Forms (или даже просто Windows-программирование) - невероятно полезно знать о лежащей в основе механике Windows, и подобные вещи помогут вам стать великим разработчиком.Великий программист хорош в программировании, но великий Разработчик хорош в создании действительно полезного программного обеспечения.:)

Другие советы

Я предполагаю, что вы пробовали FormBorderStyle.FixedSingle? Это будет отображать форму с рамкой только сверху. В любом случае, если это не так, вы можете установить область Region.

Что-то вроде ...

public static void HideBorders(Form form)
{
    Rectangle newRegion = form.Bounds;
    Rectangle formArea = form.Bounds;
    Rectangle clientArea = form.RectangleToScreen(form.ClientRectangle);

    formArea.Offset(form.Location);
    newRegion.Offset(clientArea.X - formArea.X, 0);
    newRegion.Width = clientArea.Width;
    newRegion.Height = (clientArea.Y - formArea.Y) + clientArea.Height;

    form.Region = new Region(newRegion);
}

Что касается того, как вы знаете, что делать? Все, что вы упомянули, файлы справки, веб-форумы, книги. Главное - это практика, практика, практика. Чем больше вы делаете что-то, тем лучше вы должны стать.

Я не думаю, что на самом деле возможно сделать именно то, что вы описываете, поскольку .NET Framework просто собирается делегировать рисование границы вашей формы и строки заголовка самой Windows, у которой нет никакой опции для того, что вы описываете AFAIK.

Вместо этого, что я бы сделал, так это использовал FormBorderStyle.None а затем нарисуйте любое оформление окна (строку заголовка, границы), которое вы хотите, вручную.

Поиск в Google по запросу "форма без полей на C #" показывает, что эти сайты входят в тройку самых популярных:

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top