Ich habe eine ComboBox in einem WinForm, das ich entwickle. Wenn die Auswahl auf der ComboBox geändert wird, setzt das Formular die ProjectManager
dass sie und ruft sie aus einem Wörterbuch, den Namen des PM unter Verwendung als Schlüssel. nur das Bestehen den Name des WörterbuchComboBox übergibt ausgewählten Text nicht an Wörterbuch
sollte die ComboBox sein, sondern es ist vorbei etwas ganz andere
Der frm_About_PM
Code:
public partial class frm_About_PM : Form
{
private string _Name;
private ProjectManager _Manager;
private Dictionary<string, Project> _Projects;
private Dictionary<string, ProjectManager> _OtherManagers;
public string Name
{
get
{
return _Name;
}
set
{
_Name = value;
}
}
public frm_About_PM()
{
InitializeComponent();
}
public frm_About_PM(string Name)
{
InitializeComponent();
_Name = Name;
lbl_PM_Name.Text = "Statistics - " + _Name;
}
public frm_About_PM(ProjectManager projectManager)
{
InitializeComponent();
_Manager = projectManager;
_Name = _Manager.Name;
InitiateCharts();
}
public frm_About_PM(ProjectManager projectManager, Dictionary<string, ProjectManager> OtherManagers)
{
InitializeComponent();
_Manager = projectManager;
_Name = _Manager.Name;
_OtherManagers = OtherManagers;
//Load the ComboBox
if ((_OtherManagers.Count > 0) || (_OtherManagers != null))
{
cmbo_ManagerSelect.DataSource = new BindingSource(_OtherManagers,null);
cmbo_ManagerSelect.DisplayMember = "Key";
cmbo_ManagerSelect.ValueMember = "Value";
}
InitiateCharts();
}
private void InitiateCharts()
{
lbl_PM_Name.Text = "Statistics - " + _Name + ":: " + _Manager.ProjectCount + " Projects";
Dictionary<string, double> BudgetValues = new Dictionary<string, double>();
Dictionary<string, double> ActualValues = new Dictionary<string, double>();
Dictionary<string, DateTime> StartDateValues = new Dictionary<string, DateTime>();
Dictionary<string, DateTime> EndDateValues = new Dictionary<string, DateTime>();
Dictionary<string, double> CompletionValues = new Dictionary<string, double>();
Dictionary<string, double> DurationValues = new Dictionary<string, double>();
//Load the Chart
foreach (Project P in _Manager.ProjectList.Values)
{
TimeSpan Duration = P.PlannedEnd - P.PlannedStart;
BudgetValues.Add(P.ProjectNumber, P.BudgetCost);
ActualValues.Add(P.ProjectNumber, P.ActualCost);
StartDateValues.Add(P.ProjectNumber, P.PlannedStart);
EndDateValues.Add(P.ProjectNumber, P.PlannedStart.Subtract(Duration));
CompletionValues.Add(P.ProjectNumber, P.PercentComplete);
DurationValues.Add(P.ProjectNumber, Duration.TotalDays);
}
chart_Projects.Series["Budget"].Points.DataBindXY(BudgetValues.Keys.ToArray(), BudgetValues.Values.ToArray());
chart_Projects.Series["Actual"].Points.DataBindXY(ActualValues.Keys.ToArray(), ActualValues.Values.ToArray());
chart_Completion.Series["Completion"].Points.DataBindXY(CompletionValues.Keys.ToArray(), CompletionValues.Values.ToArray());
chart_Dates.Series["Start Fill"].Points.DataBindXY(StartDateValues.Keys.ToArray(), StartDateValues.Values.ToArray());
chart_Dates.Series["Duration"].Points.DataBindXY(DurationValues.Keys.ToArray(), DurationValues.Values.ToArray());
chart_Dates.ChartAreas["Dates"].AxisY.Minimum = _Manager.EarliestStart.ToOADate();
chart_Dates.ChartAreas["Dates"].AxisY.Maximum = _Manager.LatestEnd.ToOADate();
chart_Dates.ChartAreas["Dates"].AxisX.Interval = 1;
chart_Projects.ChartAreas["BudgetChart"].AxisX.Interval = 1;
}
private void cmbo_ManagerSelect_SelectedIndexChanged(object sender, EventArgs e)
{
Debug.Print("Manager Name is: '{0}'", cmbo_ManagerSelect.Text);
_Manager = Globals.PMO_Workbook.Controller.Managers[cmbo_ManagerSelect.SelectedText];
_Name = _Manager.Name;
InitiateCharts();
}
}
Der Ausgang Ich bin von der letzten Debug.Print
Anweisung bekommen ist dies:
Manager Name is: '[John Snow, PMO_KPAT_Dashboard.Classes.ProjectManager]'
Aber es sollte nur b e vorbei John Snow
.
wirkt wie ein Zauber! Jetzt habe ich ein neues Problem: Wie kann ich das SelectedIndexChanged-Ereignis stoppen, wenn ich die Bindung an die ComboBox lade? – jDave1984
Niemals. Habe diesen Teil. Habe gerade den Event-Handler entfernt. Danke noch einmal! – jDave1984