Merhaba değerli üstatlar. Bir Toggle Buttonun “CheckChanged” özelliğinde bazı işlemler yapmak istiyorum ; Toggle buttonda değişiklik olduğu zaman direkt olarak ekrana RegisterForm adlı formun gelmesini istiyorum, fakat sınıfın örneğini tanımladığım halde gelmiyor. Nerede yanlış yapıyorum ?
FormMain.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
//FontAwesome
using FontAwesome.Sharp;
using ZyroBot.Forms;
namespace ZyroBot
{
public partial class FormMainMenu : Form
{
//Fields
private IconButton currentBtn;
public Panel leftBorderBtn;
public Form currentChildForm;
//Constructor
public FormMainMenu()
{
InitializeComponent();
leftBorderBtn = new Panel();
leftBorderBtn.Size = new Size(7, 60);
panelMenu.Controls.Add(leftBorderBtn);
//Form
this.Text = string.Empty;
this.ControlBox = false;
this.DoubleBuffered = true;
this.MaximizedBounds = Screen.FromHandle(this.Handle).WorkingArea;
}
//Structs
private struct RGBColors
{
public static Color colorIns = Color.FromArgb(138, 58, 185);
public static Color colorFace = Color.FromArgb(66, 103, 178);
public static Color colorTwit = Color.FromArgb(29, 161, 242);
public static Color colorTik = Color.FromArgb(0, 242, 234);
public static Color colorPin = Color.FromArgb(230, 0, 35);
public static Color colorLink = Color.FromArgb(0, 160, 220);
public static Color colorGostergePaneli = Color.FromArgb(216, 191, 216);
public static Color colorKullaniciTerc = Color.FromArgb(216, 191, 216);
}
//Methods
private void ActivateButton(object senderBtn, Color color)
{
if (senderBtn != null)
{
DisabeButton();
currentBtn = (IconButton)senderBtn;
currentBtn.BackColor = Color.FromArgb(37, 36, 81);
//currentBtn.ForeColor = color;
currentBtn.ForeColor = Color.White;// Butona tıklanınca değişecek renk.
currentBtn.TextAlign = ContentAlignment.MiddleCenter;
currentBtn.IconColor = color;
currentBtn.TextImageRelation = TextImageRelation.TextBeforeImage;
currentBtn.ImageAlign = ContentAlignment.MiddleRight;
//Left border button
leftBorderBtn.BackColor = color;
leftBorderBtn.Location = new Point(0, currentBtn.Location.Y);
leftBorderBtn.Visible = true;
leftBorderBtn.BringToFront();
//Icon Current Child Form
iconCurrentChildForm.IconChar = currentBtn.IconChar;
iconCurrentChildForm.IconColor = color;
//Top Panel Color
}
}
private void DisabeButton()
{
if (currentBtn != null)
{
currentBtn.BackColor = Color.FromArgb(31, 30, 68);
currentBtn.ForeColor = Color.Gainsboro;
currentBtn.TextAlign = ContentAlignment.MiddleLeft;
currentBtn.IconColor = Color.Gainsboro;
currentBtn.TextImageRelation = TextImageRelation.ImageBeforeText;
currentBtn.ImageAlign = ContentAlignment.MiddleLeft;
}
}
public void OpenChildForm(Form childForm)
{
if (currentChildForm != null)
{
//open only form
currentChildForm.Close();
}
currentChildForm = childForm;
childForm.TopLevel = false;
childForm.FormBorderStyle = FormBorderStyle.None;
childForm.Dock = DockStyle.Fill;
panelDesktop.Controls.Add(childForm);
panelDesktop.Tag = childForm;
childForm.BringToFront();
childForm.Show();
lblTitleChildForm.Text = childForm.Text;
}
private void btnInstagram_Click(object sender, EventArgs e)
{
rjDropdownMenu1.Show(btnInstagram, btnInstagram.Width, 0);
ActivateButton(sender, RGBColors.colorIns);
OpenChildForm(new FormInstagram());
}
private void btnFacebook_Click(object sender, EventArgs e)
{
ActivateButton(sender, RGBColors.colorFace);
OpenChildForm(new FormFacebook());
}
private void btnTwitter_Click(object sender, EventArgs e)
{
ActivateButton(sender, RGBColors.colorTwit);
OpenChildForm(new FormTwitter());
}
private void btnTiktok_Click(object sender, EventArgs e)
{
ActivateButton(sender, RGBColors.colorTik);
OpenChildForm(new FormTiktok());
}
private void btnPinterest_Click(object sender, EventArgs e)
{
ActivateButton(sender, RGBColors.colorPin);
OpenChildForm(new FormPinterest());
}
private void btnLinkedin_Click(object sender, EventArgs e)
{
ActivateButton(sender, RGBColors.colorLink);
OpenChildForm(new FormLinkedin());
}
private void btnGostergePaneli_Click(object sender, EventArgs e)
{
ActivateButton(sender, RGBColors.colorGostergePaneli);
OpenChildForm(new FormChartPanel());
}
private void btnTercihler_Click(object sender, EventArgs e)
{
ActivateButton(sender, RGBColors.colorKullaniciTerc);
OpenChildForm(new FormUserPreferences());
}
private void btnHome_Click(object sender, EventArgs e)
{
if (currentChildForm != null)
{
currentChildForm.Close();
Reset();
}
}
private void Reset()
{
DisabeButton();
leftBorderBtn.Visible = false;
iconCurrentChildForm.IconChar = IconChar.Home;
iconCurrentChildForm.IconColor = Color.MediumPurple;
lblTitleChildForm.Text = "Zyro Panel";
}
//Drag Form
[DllImport("user32.DLL", EntryPoint = "ReleaseCapture")]
private extern static void ReleaseCapture();
[DllImport("user32.DLL", EntryPoint = "SendMessage")]
private extern static void Sendmessage(System.IntPtr hWnd, int wMsg, int wParam, int lParam);
private void panelTitleBar_MouseDown(object sender, MouseEventArgs e)
{
ReleaseCapture();
Sendmessage(this.Handle, 0x112, 0xf012, 0);
}
private void btnExit_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void btnMaximize_Click(object sender, EventArgs e)
{
if (WindowState == FormWindowState.Normal)
WindowState = FormWindowState.Maximized;
else
WindowState = FormWindowState.Normal;
}
private void btnMinimize_Click(object sender, EventArgs e)
{
WindowState = FormWindowState.Minimized;
}
private void panelTitleBar_MouseDoubleClick(object sender, MouseEventArgs e)
{
if (WindowState == FormWindowState.Normal)
WindowState = FormWindowState.Maximized;
else
WindowState = FormWindowState.Normal;
}
private void FormMainMenu_Load(object sender, EventArgs e)
{
rjDropdownMenu1.IsMainMenu = true;
//ActivateButton(sender, RGBColors.colorTik);
OpenChildForm(new SozlesmeFormu());
}
private void btnInstagram_MouseEnter(object sender, EventArgs e)
{
rjDropdownMenu1.Show(btnInstagram, btnInstagram.Width, 0);
}
}
}
Toggle button ile işlem yaptığımda ekrana register formunun gelmesini sağlamak istiyorum. Bunu eğer (sallıyorum) ;
RegisterForm regForm = new RegisterForm();
regForm.Show();
Olarak çağırdığımda ana formdan bağımsız bir şekilde ekranda beliriyor. Oysa istediğim ana form’da diğer formlar gibi gözükmesi…
SozlesmeFormu.cs
namespace ZyroBot.Forms
{
public partial class SozlesmeFormu : Form
{
public SozlesmeFormu()
{
InitializeComponent();
textBox1.Multiline = true;
textBox1.ScrollBars = ScrollBars.Both;
}
private void toggleSozlesme_CheckedChanged(object sender, EventArgs e)
{
toggleSozlesme.Enabled = false;
toggleSozlesme.OnBackColor = Color.DarkGray;
this.Close();
FormMainMenu frmMain = new FormMainMenu();
RegisterForm formRegister = new RegisterForm();
frmMain.OpenChildForm(formRegister);
}
}
}
Bu sorunu nasıl aşabilirim ? Msdn forumlarında tam olarak şöyle bir yanıt aldım ;
hangi formun childi olduğunu belirtmeniz gerekir.
SozlesmeFormunda çağırdığınız yerde;
RegisterForm formRegister = new RegisterForm();
formRegister.MdiParent= this;
formRegister.Show();
MainFormda da ayrı bir form olarak çağırmıyorsunuz, control olarak ekleme yapıyorsunuz.
Evet, yukarıdaki yöntemi eklediğim zamanda şöyle bir hata alıyorum ;
System.ArgumentException: 'Form that was specified to be the MdiParent for this form is not an MdiContainer.
Parameter name: value'
Nasıl çözebilirim yardım eder misiniz lütfen?