#c# #winforms
#c# #winforms
Вопрос:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace MyTest
{
public partial class Form1 : Form
{
private int x, y;
private int gap = 0;
private int startingY = 150;
private GroupBox lastGB = null;
public Form1()
{
InitializeComponent();
GroupBox gb = new GroupBox();
gb.Location = new Point(100, (lastGB == null ? startingY : lastGB.Bounds.Bottom));
gb.Size = new Size(1220, 400);
gb.BackColor = SystemColors.Window;
gb.Text = "";
gb.Font = new Font("Colonna MT", 12);
this.Controls.Add(gb);
}
Это создает небольшую строку в верхней части группового поля, и я не хочу, чтобы эта строка отображалась.
И я хочу написать на нем текст в середине.
Как я могу сделать его просто полностью белым? И как написать текст в середине в групповом поле?
Основная идея состоит в том, чтобы создать над формой белый лист или поле с текстом внутри, вот и все.
Комментарии:
1. Для элементов управления, которые должны просто отображать текст, используйте метку! — Groupbox предназначен для работы в качестве контейнера для других элементов управления. Его текст предназначен в качестве заголовка для других элементов управления, например, Radioboxes — Часто интересным и гибким вариантом является использование события рисования элемента управления для e.Graphics. DrawString (…) текст поверх элемента управления с множеством опций, включая различные цвета, формы и т. Д..
2. Вы используете неправильный элемент управления. GroupBox предназначен для группировки других элементов управления вместе. Вам нужно текстовое поле или аналогичный элемент управления.
Ответ №1:
Похоже, ваше намерение состоит в том, чтобы поместить последующие поля чуть ниже последнего поля. Как уже упоминалось, a Label
, вероятно, было бы лучше. Я бы также перенес этот код в метод, который вы можете вызывать снова и снова, чтобы не повторять код в другом месте. Вы могли бы передать сообщение для отображения в ярлыке. Кроме того, не забудьте обновить ссылку на «последнее поле», когда вы создаете новое:
public partial class Form1 : Form
{
private int x, y;
private int gap = 0;
private int startingY = 150;
private Label lastLbl = null;
public Form1()
{
InitializeComponent();
AddLabel("Hello World");
}
private void button1_Click(object sender, EventArgs e)
{
AddLabel(DateTime.Now.ToString());
}
private void AddLabel(String msg)
{
Label lbl = new Label();
lbl.Location = new Point(100, (lastLbl == null ? startingY : lastLbl.Bounds.Bottom));
lbl.Size = new Size(1220, 400);
lbl.BackColor = Color.White;
lbl.Text = msg;
lbl.TextAlign = ContentAlignment.MiddleCenter;
lbl.Font = new Font("Colonna MT", 12);
this.Controls.Add(lbl);
lastLbl = lbl;
}
}