В настоящее время я разрабатываю программу для организации, которая заботится о приемных детей. Их старое решение устарело и не поддерживается, поэтому им нужна новая система, которая может взять на себя часть управления.Сделать программным обеспечением GUI программным путем?
Мне нужна помощь, вот как сделать один графический интерфейс, который я создал, создав его, как можно ближе к графическому интерфейсу, который я сделал вручную.
Здесь вы видите графический интерфейс, который я сделал вручную:
Вот тот же графический интерфейс сделанный с программированием:
Как вы можете видеть, что есть четкое различие в том, как выглядит GUI. Созданный тоже выглядит по-другому, потому что они хотели, чтобы все поля редактировались (причина, по которой мне пришлось изменить способ создания GUI).
Я делаю графический интерфейс, интерпретируя простой XML-файл:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<gui groupboxlabel="Barnets Stamdata" type="CHILD">
<textbox label="CPR" />
<textbox label="Navn" />
<textbox label="Efternavn" />
<textbox label="Addresse" />
<textbox label="Hus nr." />
<textbox label="Opgang" />
<textbox label="Post Nr." />
<textbox label="By" />
<textbox label="Email" />
<textbox label="Telefon nr." />
<textbox label="Sagsbehandler" />
<textbox label="Konsulent" />
<textbox label="Aflastning" />
<combobox label="Foranstaltning" />
<datetimepicker label="Anbring" />
<datetimepicker label="Udskriv" />
</gui>
</root>
Я хотел бы знать, как я делаю сгенерированный GUI аккуратнее и более компактным, как я впервые сделал вручную в IDE? Или как можно ближе. Я уже установил свойство Margin равным 0; 0; 0; 0 между элементами управления в FlowLayout, в которые входят все элементы управления.
Но могу ли я уменьшить расстояние между элементами управления еще больше, чтобы они приблизились друг к другу?
Вот изображение бок о бок как раз, чтобы понять, насколько велика разница есть:
EDIT
В соответствии с просьбой, код, который создает элементы управления:
public GroupBox CreateNewView(String path, String token)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(path);
DataBag info = Facade.GetFosterChild(EIdentifierType.CPR, token);
XmlNodeList nodes = xmlDoc.SelectNodes(@"/root/gui");
GroupBox gb = new GroupBox();
foreach (XmlNode node in nodes)
{
gb.Text = node.Attributes["groupboxlabel"].Value;
gb.AutoSize = true;
FlowLayoutPanel panel = new FlowLayoutPanel();
panel.AutoSize = true;
panel.WrapContents = true;
panel.FlowDirection = FlowDirection.TopDown;
panel.Dock = DockStyle.Fill;
panel.Padding = new Padding(0, 0, 0, 0);
for (int i = 0; i < node.ChildNodes.Count; i++)
{
XmlNode child = node.ChildNodes.Item(i);
switch (child.Name)
{
case "textbox":
String txtlabel = child.Attributes["label"].Value;
TextBoxControl txtctrl = new TextBoxControl(txtlabel);
txtctrl.Content = (String)info.Data[i];
txtctrl.SetDisplay((String)info.Data[i]);
panel.Controls.Add(txtctrl);
panel.Width = txtctrl.Width;
break;
case "combobox":
String combolabel = child.Attributes["label"].Value;
ComboBoxControl comboctrl = new ComboBoxControl(combolabel, (String[])info.Data[i]);
comboctrl.Content = (String[])info.Data[i];
comboctrl.SetDisplay(0);
panel.Controls.Add(comboctrl);
panel.Width = comboctrl.Width;
break;
case "datetimepicker":
String datelabel = child.Attributes["label"].Value;
DateTimeControl datectrl = new DateTimeControl(datelabel, (DateTime)info.Data[i]);
panel.Controls.Add(datectrl);
panel.Width = datectrl.Width;
break;
case "#comment":
break;
default:
Console.WriteLine("No Tag Found");
break;
}
}
gb.Controls.Add(panel);
}
return gb;
}
РЕДАКТИРОВАТЬ 2
Добавить другой фрагмент кода в соответствии с запросом. Положите его в ссылку Pastebin, потому что есть немного больше: S
'Я создаю GUI, интерпретируя простой XML-файл'. Итак, вы пытаетесь изобрести WPF, но на winforms. Почему бы просто не использовать WPF, а BTW также поддерживает настройку, стилизацию и тематику? –
Лично я думаю, что один справа выглядит лучше. Если вы хотите больше/меньше поля, тогда просто установите его программно. Вам действительно нужно указать, какую инфраструктуру вы используете (WPF или WinForms?) –
@EdS. Это точно * выглядит * как WinForms – BradleyDotNET