-2

チェック マークと WPF コントロール (2 つのテキスト ブロックを持つ範囲スライダー) を含むテーブルを作成しようとしています。WPF コントロールは Avalon ライブラリを使用して記述されており、それをテーブルに正常に追加しました。しかし、フォームが閉じられたら、テキストブロックからテキストを取得し、それをどこかに適用する必要があります。フォーム上のコントロールを反復処理して要素ホストを見つけることはできますが、フォーム上の 2 つのテキスト ブロックから値を抽出する方法がわかりません。私のコードは以下に添付されています。これで私を助けてもらえますか?

コード:

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public static TableLayoutPanel _T;
        static void set_globalvalue(TableLayoutPanel val)
        {
            _T = val;
        }

        public Form1()
        {
            InitializeComponent();

            TableLayoutPanel TP = new TableLayoutPanel();
            TP.ColumnCount = 2;
            TP.RowCount = 5;
            TP.BackColor = Color.White;
            this.Controls.Add(TP);
            TP.CellBorderStyle = TableLayoutPanelCellBorderStyle.Single;
            int size = 0;
            for (int i = 0; i < TP.RowCount; i++)
            {
                ElementHost host = new ElementHost();
                UserControl1 uc = new UserControl1(1,15);
                host.Name = i.ToString();
                host.Dock = DockStyle.Top;
                host.Child = uc;
                TP.Controls.Add(host, 1, i);
                host.Width = 270;
                host.Height = 40;
                CheckBox ch = new CheckBox();
                ch.Name = i.ToString() + "_che";
                TP.Controls.Add(ch, 0, i);
                size = size + host.Height+20;
            }

            TP.Height = size;
            TP.Width = 700;
            set_globalvalue(TP);
            this.FormClosing += Form1_FormClosing;
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            for (int i = 1; i <= _T.ColumnCount; i++)
            {
                for (int j = 0; j <= _T.RowCount; j++)
                {
                    Control c = _T.GetControlFromPosition(i, j);

                    if (c != null & c is System.Windows.Forms.Integration.ElementHost)
                    {
                        ElementHost host =c as ElementHost;
                        System.Windows.UIElement u = host.Child;
                          ???????????????????
                    }
                }
            }
        }
    }
} 
4

1 に答える 1

1

要素ホストへの参照を取得したら、次の行に沿って何かを実行できます。

ElementHost host = c as ElementHost;

UserControl1 uc = host.Child as UserControl1;

if (uc != null)
{
   //Get the text from uc
}
于 2012-07-16T17:24:21.373 に答える