Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIFormEditorWidget.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIFormEditorWidget.cpp	(revision 78248)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIFormEditorWidget.cpp	(revision 78249)
@@ -201,4 +201,11 @@
     int  m_iGeneration;
 
+    /** Holds cached bool value. */
+    bool        m_fBool;
+    /** Holds cached string value. */
+    QString     m_strString;
+    /** Holds cached choice value. */
+    ChoiceData  m_choice;
+
     /** Holds the cell instances. */
     QVector<UIFormEditorCell*>  m_cells;
@@ -314,4 +321,7 @@
     , m_enmValueType(KFormValueType_Max)
     , m_iGeneration(0)
+    , m_fBool(false)
+    , m_strString(QString())
+    , m_choice(ChoiceData())
 {
     prepare();
@@ -341,6 +351,5 @@
 {
     AssertReturn(valueType() == KFormValueType_Boolean, false);
-    CBooleanFormValue comValue(m_comValue);
-    return comValue.GetSelected();
+    return m_fBool;
 }
 
@@ -371,6 +380,5 @@
 {
     AssertReturn(valueType() == KFormValueType_String, QString());
-    CStringFormValue comValue(m_comValue);
-    return comValue.GetString();
+    return m_strString;
 }
 
@@ -401,6 +409,5 @@
 {
     AssertReturn(valueType() == KFormValueType_Choice, ChoiceData());
-    CChoiceFormValue comValue(m_comValue);
-    return ChoiceData(comValue.GetValues(), comValue.GetSelectedIndex());
+    return m_choice;
 }
 
@@ -442,5 +449,6 @@
         {
             CBooleanFormValue comValue(m_comValue);
-            m_cells[UIFormEditorDataType_Value]->setText(comValue.GetSelected() ? "True" : "False");
+            m_fBool = comValue.GetSelected();
+            m_cells[UIFormEditorDataType_Value]->setText(m_fBool ? "True" : "False");
             /// @todo check for errors
             break;
@@ -449,5 +457,6 @@
         {
             CStringFormValue comValue(m_comValue);
-            m_cells[UIFormEditorDataType_Value]->setText(comValue.GetString());
+            m_strString = comValue.GetString();
+            m_cells[UIFormEditorDataType_Value]->setText(m_strString);
             /// @todo check for errors
             break;
@@ -457,5 +466,9 @@
             CChoiceFormValue comValue(m_comValue);
             const QVector<QString> values = comValue.GetValues();
-            m_cells[UIFormEditorDataType_Value]->setText(values.isEmpty() ? QString() : values.at(comValue.GetSelectedIndex()));
+            const int iSelectedIndex = comValue.GetSelectedIndex();
+            m_choice = ChoiceData(values, iSelectedIndex);
+            m_cells[UIFormEditorDataType_Value]->setText(  !m_choice.choices().isEmpty()
+                                                         ? m_choice.choices().at(m_choice.selectedChoice())
+                                                         : QString());
             /// @todo check for errors
             break;
