0

ユーザーがアクションのリストを作成するプログラムを作成しています。可能なアクションにはすべて、指定する必要がある複数のプロパティがあります。Visual Studio がデザイン モードでオブジェクト プロパティを表示するのと同じように、これらのプロパティをリスト ボックスに表示したいと考えています。文字列はテキストボックスを取得し、ブール値はチェックボックスを取得します。オブジェクトのメンバーをリストに表示する方法を理解しましたが、各コントロールのコールバックを作成する方法を理解するのに苦労しています。基本的な構造は次のとおりです。

    void createPropertyList(object move)
    {
        Type type = move.GetType();
        FieldInfo[] fields = type.GetFields();
        propertyListBox.Items.Clear();

        foreach (var field in fields)
        {
            string name = field.Name;
            object temp = field.GetValue(move);

            if (temp is double)
            {
                double value = (double)temp;
                Label l = new Label();
                l.Content = name;

                TextBox t = new TextBox();
                t.Text = value.ToString("0.0000");                    

                // put it in a grid, format it, blah blah blah    

                propertyListBox.Items.Add(grid);
            }

            // reflect on other types
        }
    }

ラムダが関係すると思いますが、FieldInfo 配列を元に戻して実際にこれらのメンバーを参照し、ユーザーの入力をオブジェクトに戻すにはどうすればよいでしょうか?

4

4 に答える 4

1

Sorry, I should have looked in FieldInfo. GetValue has a corresponding SetValue. Works like a charm.

于 2012-11-01T15:21:34.837 に答える
0

BindingプロパティとDependencyPropertyを使用してさまざまなコントロールをバインドすることを検討している場合があります。これを行うには、よりWPFの方法です。

于 2012-11-01T15:24:37.680 に答える
0

すべてのタイプのコントロールに対して状態変更イベント ハンドラーを作成する必要があります。

たとえば、テキストボックス

...
TextBox t = new TextBox();
t.Tag=name;
t.KeyUp+=t_KeyUp;

どこ

private void t_KeyUp(object sender, KeyEventArgs e)
{
    TextBox source = (sender as TextBox);
    MessageBox.Show("Field "+source.Tag + " is changed. New value is "+source.Text);
}
于 2012-11-01T15:27:54.857 に答える
0

あなたはすでにそれを制御しています: http://msdn.microsoft.com/en-us/library/aa302326.aspx

于 2012-11-01T15:45:40.240 に答える