Подскажите как сделать что бы при нажатии на CheckBox "File" в состоянии false со всех других в "Sub Menu" снимались галочки и если последних элемент в "Sub Menu" перевожу в false он CheckBox "File" меняет тоже в false?
И если будут замечания как стоит правильно оформлять код, подскажите, а то в институте, ни слова за написание кода не говорят, все самому приходится рефакторить.
public partial class Form1 : Form
{
private CheckBox checkBox1;
private Label label1;
private CheckBox checkBox2;
private CheckBox checkBox3;
private Label label3;
private Panel panel4;
private Label label2;
private CheckBox checkBox_New;
private CheckBox checkBox_Save;
private CheckBox checkBox_Exit;
private CheckBox checkBox_SaveAs;
private CheckBox checkBox_Open;
private CheckBox checkBox_Find;
private CheckBox checkBox_Undo;
private CheckBox checkBox_Paste;
private CheckBox checkBox_Copy;
private CheckBox checkBox_Redo;
private CheckBox checkBox__Cut;
private CheckBox checkBox_ArrangeIcons;
private CheckBox checkBox_Cascade;
private CheckBox checkBox_Title;
private CheckBox checkBox_Next;
private CheckBox checkBox_MinimizeAll;
private Button button_Cancel;
private Button button_OK;
private Panel panel3;
private Panel panel2;
private Panel panel1;
private MainMenu mainMenu = new MainMenu();
AppConfig appConfig;
public Form1()
{
InitializeComponent();
var menuItemFile = new MenuItem("File",
new[]
{
new MenuItem("New"), new MenuItem("Open"), new MenuItem("Save"), new MenuItem("Save As"),
new MenuItem("Exit"),
})
{ Visible = false };
var menuItemEdit = new MenuItem("Edit",
new[]
{
new MenuItem("Copy"), new MenuItem("Past"), new MenuItem("Cut"), new MenuItem("Undo"),
new MenuItem("Redo"), new MenuItem("Find"),
})
{ Visible = false };
var menuItemWindows = new MenuItem("Windows",
new MenuItem[]
{
new MenuItem("Title"), new MenuItem("Cascade"), new MenuItem("Minimize All"),
new MenuItem("Arrange Icon"), new MenuItem("Next"), new MenuItem("Find"),
})
{ Visible = false };
mainMenu.MenuItems.Add(menuItemFile);
mainMenu.MenuItems.Add(menuItemEdit);
mainMenu.MenuItems.Add(menuItemWindows);
this.Menu = mainMenu;
MenuItemHide();
appConfig = Load();
checkBox1.Checked = appConfig.isFile;
checkBox2.Checked = appConfig.isEdit;
checkBox3.Checked = appConfig.isWindows;
checkBox_New.Checked = appConfig.isNew;
checkBox_Save.Checked = appConfig.isSave;
checkBox_Exit.Checked = appConfig.isExit;
checkBox_SaveAs.Checked = appConfig.isSaveAs;
checkBox_Open.Checked = appConfig.isOpen;
checkBox_Find.Checked = appConfig.isFind;
checkBox_Undo.Checked = appConfig.isUndo;
checkBox_Paste.Checked = appConfig.isPast;
checkBox_Copy.Checked = appConfig.isCopy;
checkBox_Redo.Checked = appConfig.isRedo;
checkBox__Cut.Checked = appConfig.isCut;
checkBox_ArrangeIcons.Checked = appConfig.isArrangeIcons;
checkBox_Cascade.Checked = appConfig.isCascade;
checkBox_Title.Checked = appConfig.isTitle;
checkBox_Next.Checked = appConfig.isNext;
checkBox_MinimizeAll.Checked = appConfig.isMinimizeAll;
}
public void Save(AppConfig appConfig)
{
appConfig.isFile = checkBox1.Checked;
appConfig.isEdit = checkBox2.Checked;
appConfig.isWindows = checkBox3.Checked;
appConfig.isNew = checkBox_New.Checked;
appConfig.isSave = checkBox_Save.Checked;
appConfig.isExit = checkBox_Exit.Checked;
appConfig.isSaveAs = checkBox_SaveAs.Checked;
appConfig.isOpen = checkBox_Open.Checked;
appConfig.isFind = checkBox_Find.Checked;
appConfig.isUndo = checkBox_Undo.Checked;
appConfig.isPast = checkBox_Paste.Checked;
appConfig.isCopy = checkBox_Copy.Checked;
appConfig.isRedo = checkBox_Redo.Checked;
appConfig.isCut = checkBox__Cut.Checked;
appConfig.isArrangeIcons = checkBox_ArrangeIcons.Checked;
appConfig.isCascade = checkBox_Cascade.Checked;
appConfig.isTitle = checkBox_Title.Checked;
appConfig.isNext = checkBox_Next.Checked;
appConfig.isMinimizeAll = checkBox_MinimizeAll.Checked;
var jsonFormatter = new DataContractJsonSerializer(typeof(AppConfig));
using (var file = new FileStream("config.json", FileMode.Create))
{
jsonFormatter.WriteObject(file, appConfig);
}
}
public new AppConfig Load()
{
var jsonFormatter = new DataContractJsonSerializer(typeof(AppConfig));
using (var file = new FileStream("config.json", FileMode.OpenOrCreate))
{
if (file.Length > 0)
{
return (AppConfig)jsonFormatter.ReadObject(file);
}
}
return new AppConfig();
}
private void MenuItemHide()
{
foreach (MenuItem elementMenu in this.Menu.MenuItems)
{
elementMenu.Visible = false;
foreach (MenuItem element in elementMenu.MenuItems)
{
element.Visible = false;
}
}
}
private void CheckBoxCheckedChanged(object sender, System.EventArgs e)
{
CheckBox box = sender as CheckBox;
foreach (MenuItem elementMenu in this.Menu.MenuItems)
{
if (box != null && elementMenu.Text == box.Text)
{
if (box.Checked)
{
elementMenu.Visible = true;
}
else
{
elementMenu.Visible = false;
}
}
if (elementMenu != null)
{
foreach (MenuItem element in elementMenu.MenuItems)
{
if (box.Text == element.Text)
{
if (box.Checked)
{
element.Visible = true;
}
else
{
element.Visible = false;
}
}
}
}
}
}
private void button_OK_Click(object sender, System.EventArgs e)
{
Save(appConfig);
this.Close();
}
private void button_Cancel_Click(object sender, System.EventArgs e)
{
this.Close();
}
}
А по оформлению кода могу сказать одно: он должен быть читаем. Добавь комментарии к коду в некоторых местах (особенно в логике нужно) с пояснением, чтобы можно было с легкостью ориентироваться в коде
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть большой запрос, который не работаетВ исключении написано что {"ORA-00911: неверный символ"}
РебятаМне нужно отменить BakgroundWorker из основной формы, которая была запущена в другой форме
Открыл исходник одного из компонента WinForms и увидел это:
в столбце "отправитель" и "получатель" встречаются одинаковые фамилии (когда перевод осуществляется родственникуНапример: