Как я могу создать большое пустое белое поле и написать текст в его середине?

#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;
    }
}