3

カスタム フォームを使用して作成したデータ フロー コンポーネントのカスタム プロパティを設定しようとすると、実際に問題が発生します。

割り当てている値は現在設定中です。カスタム プロパティは元の値のままか、null のままです。

私の TaskClass では、ProvideComponentProperties() メソッドをオーバーライドし、以下に示すようにカスタム プロパティを作成しました。

IDTSCustomProperty100 componentCustomProperty = ComponentMetaData.CustomPropertyCollection.New();
componentCustomProperty.Name = "PAFProvider";
componentCustomProperty.Description = "PAF Provider";
componentCustomProperty.Value = "testinitial";

IDtsComponentUI インターフェイスから継承する TaskClassUI を作成しました。必要なすべてのメソッドを実装します。

私の初期化方法。

public void Initialize(IDTSComponentMetaData100 dtsComponentMetadata, IServiceProvider serviceProvider)
{
       this._dtsComponentMetaData = dtsComponentMetadata;
            this._serviceprovider = serviceProvider;

}

私の Edit メソッドの実装

 public bool Edit(IWin32Window parentWindow, Variables variables, Connections connections)
    {
        bool flag;
        try
        {
            PAFUIMainWnd ui = new PAFUIMainWnd(this._dtsComponentMetaData, this._serviceprovider, connections);
            DialogResult result = ui.ShowDialog(parentWindow);
            bool flag1 = result != DialogResult.OK;
            if(!flag1)
            {
                flag = true;
                return flag;
            }
        }
        catch(Exception exe)
        {
            MessageBox.Show(exe.ToString());
        }
        flag = false;
        return flag;            
    }

そして私のUIFORMの実装。

public PAFUIMainWnd(IDTSComponentMetaData100 iDTSComponentMetaData100, IServiceProvider serviceProvider, Connections connections)
        {            
            this.components = null;
            this.InitializeComponent();
            this._dtsComponentMetaData = iDTSComponentMetaData100;     
            this._designTimeComponent = this._dtsComponentMetaData.Instantiate();
            textBox1.Text = _dtsComponentMetaData.CustomPropertyCollection["PAFProvider"].Value.ToString();

        }

テスト目的で、フォームにテキストボックスとボタンを貼り付けました。ボタンの OnClick は以下のとおりです。テキストボックスから値を取得してカスタムプロパティに割り当てているだけですが、割り当てていません。テキスト ボックスに割り当てたカスタム プロパティから元の値を読み取ることができます。割り当てられない理由がわかりません。私は MSDN と他のさまざまな例を完全にフォローしました。誰かが私が間違っていたことを指摘できれば、私はとてもうれしいです. ヘッドバンギングの段階になりました。

 private void btnOK_Click(object sender, EventArgs e)
    {
       _designTimeComponent.SetComponentProperty("PAFProvider", textBox1.Text);           

        this.Close();
    }
4

1 に答える 1

0

再起動するとこれが修正されました。コードは完全に問題ありませんでした。

于 2012-12-05T09:32:06.907 に答える