0
開発中のWinFormにコンボボックスがあります。 ComboBoxの選択が変更されると、FormはProjectManager
をリセットし、PMの名前をキーとして使用して辞書から辞書を取得します。コンボボックスが選択したテキストを辞書に渡さない
コンボボックスだけで辞書に名前を渡すべきであるが、代わりにfrm_About_PM
コード全く異なる
何かを渡しています:私は最後Debug.Print
の文から取得していますが出力される
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();
}
}
この:
Manager Name is: '[John Snow, PMO_KPAT_Dashboard.Classes.ProjectManager]'
しかし、それが必要ジャストB eをJohn Snow
に渡す。
作品!今私は新たな問題があります:どのように私はコンボボックスにバインディングを読み込むときにSelectedIndexChangedイベントをトリガから停止できますか? – jDave1984
Nevermind。その部分を得ました。ちょうどイベントハンドラを削除しました。再度、感謝します! – jDave1984