首页 > 解决方案 > 尽管 FormBorderStyle 属性等于无,为什么子窗体显示最大化和最小化按钮?

问题描述

我正在使用可视化 C# 和 Windows 窗体。

我有一个父窗体,它调用它的子窗体,窗体子窗体的 FormBorderStyle 属性为无,最小化框和最大化框为 false,WindowsState 为最大化,但是当程序运行时,按钮最大化和最小化出现,尽管被禁用,它们仍然有效.

看附图。

在此处输入图像描述

代码:

  this.WindowState = FormWindowState.Maximized;
  this.Dock = DockStyle.Fill;
  InicioSesion inicioSesionForm = new InicioSesion();
  inicioSesionForm.MdiParent = this;
  inicioSesionForm.Dock = DockStyle.Fill;
  inicioSesionForm.ShowInTaskbar = false;
  inicioSesionForm.MaximizeBox = false;
  inicioSesionForm.MinimizeBox = false;
  inicioSesionForm.Show();

有没有办法解决这个问题?

欢迎任何意见或建议。

更新:

IncioSession 表单中的代码:

using allSale.Clases;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace allSale
{
    public partial class InicioSesion : Form
    {
        public InicioSesion()
        {
            InitializeComponent();
        }

        private void linkLabelRegistrarteLogin_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            Registrarse registrarse = new Registrarse();
            registrarse.MdiParent = (FormularioPrincipal) this.ParentForm;
            registrarse.Dock = DockStyle.Fill;
            registrarse.WindowState = FormWindowState.Maximized;
            registrarse.Show();
            this.Close();
        }

        private void btnEntrarLogin_Click(object sender, EventArgs e)
        {
            if (textCorreoLogin.Text.Length == 0)
            {
                MessageBox.Show("¡Debe ingresar un correo electrónico!", "allSale", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                return;
            }
            else if (textClaveLogin.Text.Length == 0)
            {
                MessageBox.Show("¡Debe ingresar su contraseña de usuario!", "allSale", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                return;
            }
            else
            {
                Validador validador = new Validador();
                if (validador.correoElectronicoValido(textCorreoLogin.Text))
                {
                    BaseDeDatos baseDeDatos = new BaseDeDatos();
                    String correoUsuario = baseDeDatos.obtenerCorreoUsuario();
                    if (!String.IsNullOrEmpty(correoUsuario))
                    {
                        String claveUsuario = baseDeDatos.obtenerClaveUsuario();

                        if (correoUsuario.Equals(textCorreoLogin.Text) && claveUsuario.Equals(textClaveLogin.Text))
                        {

                            Globals.idEmpresa = baseDeDatos.obtenerIDEmpresaPorRUC(baseDeDatos.obtenerRUCUsuarioPorCorreo(correoUsuario));
                            Globals.idUsuario = baseDeDatos.obtenerIDUsuarioPorCorreo(correoUsuario);

                            Vender formularioVender = new Vender();
                            formularioVender.MdiParent = (FormularioPrincipal)this.ParentForm;
                            formularioVender.Dock = DockStyle.Fill;
                            formularioVender.WindowState = FormWindowState.Maximized;
                            formularioVender.Show();

                            FormularioPrincipal parent = (FormularioPrincipal)this.ParentForm;
                            parent.visibleMenuGeneral(true);

                            //FormularioPrincipal formularioPrincipal = new FormularioPrincipal();
                            //formularioPrincipal.visibleMenuGeneral(true);
                            this.Close();
                        }
                        else
                        {
                            if (correoUsuario.Equals(textCorreoLogin.Text))
                            {
                                MessageBox.Show("¡La clave ingresada es incorrecta!", "allSale", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                            }
                            else
                            {
                                MessageBox.Show("¡No existe un usuario con el correo ingresado!", "allSale", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                            }
                        }

                    }
                    else
                    {
                        MessageBox.Show("¡No existe aún usuarios almacenados!", "allSale", MessageBoxButtons.OK, MessageBoxIcon.Stop); 
                    }
                }
                else {MessageBox.Show("¡Debe ingresar un correo electrónio válido!", "allSale", MessageBoxButtons.OK, MessageBoxIcon.Stop);}


            }
        }
        public static class Globals
        {
            public static int idEmpresa = 0;
            public static int idUsuario = 0;
            public static List<ProductosVender> listaProductosParaVenderX = new List<ProductosVender>();
           
        }

        private void InicioSesion_FormClosing(object sender, FormClosingEventArgs e)
        {
            e.Cancel = true;
        }
    }
}

以及发生了什么的视频

问题的更新 2:删除 DockStyle.Fill;

在此处输入图像描述

解决方案:

如何删除 MDI 菜单条中的最大化、最小化和关闭图标

标签: c#winformsparent-childformborderstyle

解决方案


我认为如果您将子窗体的窗口状态设置为最大化,无论窗口样式如何,它都会显示这些按钮。它就像一些 MDI 父子行为。

您可以尝试手动设置子窗体窗口的位置和大小。我假设您不会移动子窗体,因为您将窗体边框样式设置为无。

您可以尝试的其他事情是添加一个面板并用它填充父表单。然后在该面板内添加最大化的子表单。


推荐阅读