2014-02-27 60 views

回答

0

Control元素具有Property屬性。該屬性包含屬性的名稱,該屬性定義了控件的值,在您的情況下爲Edit控件。當您更改此鏈接屬性的值時,控件將開始顯示此新值。

但是,對話框應該「刷新」,以便更改可見。只要Windows安裝程序界面非常有限,不會暴露各種各樣的事件,您應該以某種方式處理它。

例如,假設您需要在剛剛加載對話框時更改編輯控件中的值。您可以通過以下方式實現此目的:在以前的對話框中,在Next按鈕單擊上指定DoAction事件,然後通過此事件運行您的自定義操作。因此,當加載下一個對話框時,編輯控件將顯示所需的值。

附註:它可能會證明您不需要C#自定義操作 - SetProperty可能就足夠了。如果是這種情況,請儘可能使用它。

1

如果您正在處理文件瀏覽器對話框或文件夾瀏覽器對話框(也適用於您的案例),請在執行自定義操作後發佈已更改的屬性。如果您在調用自定義操作之前重置,則最好。見下面的例子

<Control Id="editLocation" Type="Edit" X="45" Y="174" Height="18" Width="220" Property="YOUR_PROPERTY" Text="[YOUR_PROPERTY]"/> 
    <Control Id="btnEditLocation" Type="PushButton" X="270" Y="175" Width="56" Height="17" Text="Browse" Property="YOUR_PROPERTY"> 
    <Publish Event="Reset" Value="1">1</Publish>    
    <Publish Event="DoAction" Value="YOUR_CUSTOM_ACTION"><![CDATA[1]]></Publish> 
    <Publish Property="YOUR_PROPERTY" Value="[YOUR_PROPERTY]"><![CDATA[1]]></Publish> 
    </Control> 
+0

+1不知道爲什麼這是downvoted。這裏的關鍵是重置事件,或者輸入的編輯控件不會更新。無關它是否使用文件瀏覽器,雖然:) – gordonmleigh

1

除了通過Nilaksha佩雷拉的建議連接的屬性,我的做法是移動Reset動作到C#自定義操作。這樣,我們可以選擇僅在自定義操作即將完成時才調用它。這具有不清除編輯控制的值的優點,除非已指定替換值。

一個例子自定義控件:

public static ActionResult FileBrowser(Session session) 
{ 
    try 
    { 
     // Call your file browser here. 

     session[VALUE] = "New value"; 

     session.DoAction("Reset"); 
     return ActionResult.Success; 
    } 
    catch (Exception ex) 
    { 
     session.Log($"Unable to launch the file browser: {ex.Message}"); 
     return ActionResult.Failure; 
    } 
} 
相關問題