クラスから入力コントロールを自動生成する その2(中編2) |
1.属性の作成
2.入力コントロール用データソース取得インターフェースの作成
3.コンボボックス選択値作成用クラスの作成
【中編】
4-1.FlowLayoutPanelクラスを継承したUcSettingControlクラスの修正1
4-2.FlowLayoutPanelクラスを継承したUcSettingControlクラスの修正2
【後編】
5.検索コントロール作成用クラスに属性を追加
6.UcSettingControlクラスの利用方法
4-2.FlowLayoutPanelクラスを継承したUcSettingControlクラスの修正2
4-1.FlowLayoutPanelクラスを継承したUcSettingControlクラスの修正1に下記のメソッドを追加します。
○ソースコード
#region データバインド関係
/// <summary>
/// データバインド処理:テキストボックス
/// </summary>
/// <param name="input"></param>
/// <param name="pi"></param>
/// <param name="dataSourceClass">コンボボックスやリストボックスのための選択項目出力クラス</param>
/// <returns>入力コントロールの高さ情報</returns>
private int SetDataBind(TextBox input, PropertyInfo pi, Type dataSourceClass)
{
var inputData = pi.GetValue(this.target, null);
input.Text = inputData == null ? string.Empty : inputData.ToString();
input.TextChanged += (sender, e) =>
{
pi.SetValue(this.target, input.Text, null);
};
return input.Height;
}
/// <summary>
/// データバインド処理:チェックボックス
/// </summary>
/// <param name="input"></param>
/// <param name="pi"></param>
/// <param name="dataSourceClass">コンボボックスやリストボックスのための選択項目出力クラス</param>
/// <returns>入力コントロールの高さ情報</returns>
private int SetDataBind(CheckBox input, PropertyInfo pi, Type dataSourceClass)
{
var inputData = pi.GetValue(this.target, null);
input.Checked = inputData == null ? false : (bool)inputData;
input.CheckedChanged += (sender, e) =>
{
pi.SetValue(this.target, input.Checked, null);
};
return input.Height;
}
/// <summary>
/// データバインド処理:コンボボックス
/// </summary>
/// <param name="input"></param>
/// <param name="pi"></param>
/// <param name="dataSourceClass">コンボボックスやリストボックスのための選択項目出力クラス</param>
/// <returns>入力コントロールの高さ情報</returns>
private int SetDataBind(ComboBox input, PropertyInfo pi, Type dataSourceClass)
{
var datasource =
(ISettingControlDataSource)Activator.CreateInstance(dataSourceClass);
if (datasource != null)
{
input.ValueMember = datasource.GetValueMember();
input.DisplayMember = datasource.GetDisplayMember();
input.Items.AddRange(datasource.GetItem().ToArray());
}
var inputData = pi.GetValue(this.target, null);
input.SelectedValueChanged += (_sender, _e) =>
{
pi.SetValue(this.target, input.SelectedValue, null);
};
input.SelectedValue = inputData;
return input.Height;
}
#endregion
よかったらクリックしてください。


にほんブログ村