Hi,
I have a scenario where the rad dock configuration xml file has be tampered. When loading it, it fails, is there a way to tell to raddock that it needs to ignore settings from xml completely as if there we haven't loaded it from xml file.
Here is a code snippet,
if (File.Exists(DockStatePath))
{
try { radDock.LoadFromXml(DockStatePath);
}
catch (XmlException)
{
//suppress do nothing instead make sure it radDock behaves as we are not loading any settings
}
}
We can load default settings but that won't help because the users will have different resolution from the one where form is being designed.
If loading fails, it needs to treat as if we never attempted to load from xml file thus it maintains correct layout settings like the one without loading it from Xml file.
Thx in Advance.
M
I have a scenario where the rad dock configuration xml file has be tampered. When loading it, it fails, is there a way to tell to raddock that it needs to ignore settings from xml completely as if there we haven't loaded it from xml file.
Here is a code snippet,
if (File.Exists(DockStatePath))
{
try { radDock.LoadFromXml(DockStatePath);
}
catch (XmlException)
{
//suppress do nothing instead make sure it radDock behaves as we are not loading any settings
}
}
We can load default settings but that won't help because the users will have different resolution from the one where form is being designed.
If loading fails, it needs to treat as if we never attempted to load from xml file thus it maintains correct layout settings like the one without loading it from Xml file.
Thx in Advance.
M
5 Answers, 1 is accepted
0
Hi Milan,
Thank you for writing.
I can confirm the observed issue appears and I have logged it in our Public Issue Tracking System. You can subscribe for its status updates here: http://www.telerik.com/support/pits.aspx#/public/winforms/14957.
To work around this case, you will have to call the following method prior loading the default layout:
I hope that you find this information useful. Your Telerik Points have been updated for this report.
Greetings,
Stefan
the Telerik team
Thank you for writing.
I can confirm the observed issue appears and I have logged it in our Public Issue Tracking System. You can subscribe for its status updates here: http://www.telerik.com/support/pits.aspx#/public/winforms/14957.
To work around this case, you will have to call the following method prior loading the default layout:
if
(File.Exists(
"userDockState.xml"
))
{
try
{
radDock1.LoadFromXml(
"userDockState.xml"
);
}
catch
(XmlException)
{
radDock1.EndTransactionBlock();
radDock1.LoadFromXml(
"defaultDockState.xml"
);
}
}
I hope that you find this information useful. Your Telerik Points have been updated for this report.
Greetings,
Stefan
the Telerik team
WinForms Q1 2013 boasts PivotGrid, PDF Viewer, Chart enhancements and more.
Check out all of the latest highlights.
0
MG
Top achievements
Rank 1
answered on 07 May 2013, 10:06 AM
Hi Stefan,
Thanks for the reply.
If XmlException is being thrown, we can call radDock.EndTransactionBlock() and it does what I wanted but if it throws other exception like System.FormatException (when raddock config file has int value but been tampered to string), loading default settings has no effect what so ever. In order to verfiy, please change int value in config xml file and try to to load it back with default settings xml.
Please kindly advise.
Many thanks,
M G
Thanks for the reply.
If XmlException is being thrown, we can call radDock.EndTransactionBlock() and it does what I wanted but if it throws other exception like System.FormatException (when raddock config file has int value but been tampered to string), loading default settings has no effect what so ever. In order to verfiy, please change int value in config xml file and try to to load it back with default settings xml.
if
(File.Exists(
"userDockState.xml"
))
{
try
{
radDock1.LoadFromXml(
"userDockState.xml"
);
}
catch
(XmlException)
{
radDock1.EndTransactionBlock();
radDock1.LoadFromXml(
"defaultDockState.xml"
);
}catch(Exception)
{
radDock1.EndTransactionBlock();
radDock1.LoadFromXml(
"defaultDockState.xml"
); //it does not do anything
}
}
Many thanks,
M G
0
Hi,
Thank you for writing back.
This scenario seems to be working on my end. Please refer to the attached project and video. Can you please let me know what I am missing?
Kind regards,
Stefan
the Telerik team
Thank you for writing back.
This scenario seems to be working on my end. Please refer to the attached project and video. Can you please let me know what I am missing?
Kind regards,
Stefan
the Telerik team
WinForms Q1 2013 boasts PivotGrid, PDF Viewer, Chart enhancements and more.
Check out all of the latest highlights.
0
MG
Top achievements
Rank 1
answered on 09 May 2013, 11:13 AM
Hi Stefan,
Thank you for your solution.
I am attaching a sample project that shows the problem I am having. It has 3 tool windows docked to left and 2 windows docked to right.
There is a button to generate "userdockstate.xml" and "defaultsetting.xml" by clicking button1 and button2 in the form.
Once those files are created,
1. Modify "userdockstate.xml" by just changing <RadDock> root element to <RadDock1> and run the application. It throws XmlException and default layout is set by loading "defaultsetting.xml" file. This is fine
2. Now, modify "userdockstate.xml" such that it generates other exception as an example, simple change "AutoSizeScale="0, 0" attribute to contain string "AutoSizeScale="dfdf, 0". This time, it goes to second catch statement and tries to load the same "defaultsetting.xml" file but the form loses tool window.
I have attached the sample project Iin the support ticket and screenshots of the forms - working one and problematic one for you to review.
Please kindly advise.
Many thanks
M G
Thank you for your solution.
I am attaching a sample project that shows the problem I am having. It has 3 tool windows docked to left and 2 windows docked to right.
There is a button to generate "userdockstate.xml" and "defaultsetting.xml" by clicking button1 and button2 in the form.
Once those files are created,
1. Modify "userdockstate.xml" by just changing <RadDock> root element to <RadDock1> and run the application. It throws XmlException and default layout is set by loading "defaultsetting.xml" file. This is fine
2. Now, modify "userdockstate.xml" such that it generates other exception as an example, simple change "AutoSizeScale="0, 0" attribute to contain string "AutoSizeScale="dfdf, 0". This time, it goes to second catch statement and tries to load the same "defaultsetting.xml" file but the form loses tool window.
I have attached the sample project Iin the support ticket and screenshots of the forms - working one and problematic one for you to review.
Please kindly advise.
Many thanks
M G
0
Accepted
Hi,
I am copying the answer from the support ticket to this thread as well so the community can benefit from it:
In this case, the exception is being thrown at a time when the dock started rebuilding itself, so the workaround that I previously provided will not work in this case.
To handle this scenario I can suggest creating a new dock instance in memory and attempt to load the layout in it. If it fails, load the default state, alternatively, load the user state.
Stefan
the Telerik team
I am copying the answer from the support ticket to this thread as well so the community can benefit from it:
In this case, the exception is being thrown at a time when the dock started rebuilding itself, so the workaround that I previously provided will not work in this case.
To handle this scenario I can suggest creating a new dock instance in memory and attempt to load the layout in it. If it fails, load the default state, alternatively, load the user state.
if
(File.Exists(
"userdockstate.xml"
))
{
try
{
RadDock tempDock =
new
RadDock();
tempDock.LoadFromXml(
"userdockstate.xml"
);
radDock1.LoadFromXml(
"userdockstate.xml"
);
}
catch
(XmlException)
{
radDock1.EndTransactionBlock();
radDock1.LoadFromXml(
"defaultSettings.xml"
);
}
catch
(Exception)
{
radDock1.LoadFromXml(
"defaultSettings.xml"
);
}
}
All the best,
Stefan
the Telerik team
RadChart for WinForms is obsolete. Now what?