Отключить кнопку закрытия для динамически создаваемой формы
Я хочу отключить кнопку close () для динамически создаваемой формы.
Я могу сделать это, переопределив
CreateParamsformsформа метода формы добавляются в проект через обозреватель решений. Но это не работает для форм, созданных динамически с помощью кода позади. то есть я не могу вызвать
CreateParamsиз динамической формы.
Что я уже пробовал:
ниже приведено рабочее решение для отключения кнопки закрытия путем переопределения метода CreateParams для добавления формы через обозреватель решений
public partial class Form1 : Form { #region Private Variables private const int CP_NOCLOSE_BUTTON = 0x200; #endregion public Form1() { InitializeComponent(); } protected override CreateParams CreateParams { get { var myCp = base.CreateParams; myCp.ClassStyle = myCp.ClassStyle | CP_NOCLOSE_BUTTON; return myCp; } } private void Form1_Load(object sender, EventArgs e) { } }
Но, для приведенной ниже динамической формы, как я могу отключить кнопку закрытия
public static DialogResult CustomDialogBox(string title, string _lblUserName, string _lblPassword, ref string proxyUserName, ref string proxyPassword) { Form frmProxyAuthDialog = new Form(); frmProxyAuthDialog.FormClosing += FrmProxyAuthDialog_FormClosing; Label lblUserName = new Label(); Label lblPassword = new Label(); TextBox txtUserName = new TextBox(); TextBox txtPassword = new TextBox(); txtPassword.PasswordChar = '*'; Button buttonOk = new Button(); //Button buttonCancel = new Button(); frmProxyAuthDialog.Text = title; lblUserName.Text = _lblUserName; lblPassword.Text = _lblPassword; buttonOk.Text = "OK"; //buttonCancel.Text = "Cancel"; buttonOk.DialogResult = DialogResult.OK; //buttonCancel.DialogResult = DialogResult.Cancel; lblUserName.SetBounds(9, 10, 372, 13); txtUserName.SetBounds(12, 30, 372, 20); lblPassword.SetBounds(9, 52, 372, 13); txtPassword.SetBounds(12, 68, 372, 20); buttonOk.SetBounds(228, 90, 75, 23); //buttonCancel.SetBounds(309, 72, 75, 23); lblUserName.AutoSize = true; lblPassword.AutoSize = true; txtUserName.Anchor = txtUserName.Anchor | AnchorStyles.Right; txtPassword.Anchor = txtPassword.Anchor | AnchorStyles.Right; buttonOk.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; //buttonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; frmProxyAuthDialog.ClientSize = new Size(396, 120); frmProxyAuthDialog.Controls.AddRange(new Control[] { lblUserName, lblPassword, txtUserName, txtPassword, buttonOk }); frmProxyAuthDialog.ClientSize = new Size(Math.Max(300, lblUserName.Right + 10), frmProxyAuthDialog.ClientSize.Height); frmProxyAuthDialog.FormBorderStyle = FormBorderStyle.FixedDialog; frmProxyAuthDialog.StartPosition = FormStartPosition.CenterScreen; frmProxyAuthDialog.MinimizeBox = false; frmProxyAuthDialog.MaximizeBox = false; frmProxyAuthDialog.AcceptButton = buttonOk; //frmProxyAuthDialog.CancelButton = buttonCancel; DialogResult dialogResult = frmProxyAuthDialog.ShowDialog(); proxyUserName = txtUserName.Text; proxyPassword = txtPassword.Text; return dialogResult; }
Я также попытался отменить закрытие формы при закрытии формы, если причина закрытия не является закрытием пользователя. Но, если причина закрытия формы всегда заключается в закрытии пользователя, если кнопка закрытия нажата первой.
CHill60
Я в замешательстве - почему вы пометили обоих ASP.NET и WinForms?
Karthik_Mahalingam
:)