c# - 尽管 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 父子行为。
您可以尝试手动设置子窗体窗口的位置和大小。我假设您不会移动子窗体,因为您将窗体边框样式设置为无。
您可以尝试的其他事情是添加一个面板并用它填充父表单。然后在该面板内添加最大化的子表单。
推荐阅读
- python - 如何在循环中使用 Scrapy FormRequest
- javascript - 由于多个选择声明而导致功能损坏
- javascript - Mongoose 模型查询挂在节点中
- vb.net - Visual Basic 解析子节点
- bash - 在斐波那契数列中查找数字的索引
- powershell - 最小化远程服务器时的 PowerShell 屏幕截图
- android - 不兼容的类型:Fragment 无法转换为 Activity
- java - 我需要一个会写 Java Streams 的人。我想将此代码编写为 Java 流类型
- typescript - 本地打字稿包的导入未解决
- javascript - 为什么我必须使用高阶函数作为 setTimeout 中的第一个参数?