C # .net framework- граница только на одной стороне формы
Вопрос
Я неопытный программист , совершенно новичок в программировании для 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 #" показывает, что эти сайты входят в тройку самых популярных:
- Окно без полей (java2s.com)
- Прозрачные формы без полей на языке Си# (c-sharpcorner.com)
- Перетаскиваемая Форма:Перетащите форму без полей, щелкнув в любом месте Формы (codeproject.com)