I have created a .NET user control with an ActiveX interface. It works well.
Now, I want to be able to read and write from the property bag for the ActiveX interface.
How would I do this?
The easiest is to use client script to pass the parameters values to the ActiveX
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
<script language="javascript">
function Rundata(file)
{
var winCtrl = document.getElementById("YourActiveX");
winCtrl.Option1 = file;
winCtrl.WriteToFile();
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<object id="YourActiveX" classid="clsid:6b1bdf22-1c1d-774e-cd9d-1d1aaf7fd88f"
width="300px" height="200px">
<param name="Option1" value="valuetoRetrieve1" />
</object>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<asp:Button runat="server" ID="Button1" OnClientClick="javascript:Rundata('valuetoRetrieve2');" />
</div>
</form>
</body>
</html>
If you can't use client script, you can try that way:
Let's say you want to read a parameter such as:
<object id="YourActiveX" classid="clsid:6b1bdf22-1c1d-774e-cd9d-1d1aaf7fd88f"
width="300px" height="200px">
<param name="option1" value="valuetoRetrieve" />
</object>
You need to expose the following COM interfaces in your project:
[ComImport]
[Guid("55272A00-42CB-11CE-8135-00AA004BB851")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IPropertyBag
{
void Write([InAttribute] string propName, [InAttribute] ref Object ptrVar);
void Read([InAttribute] string propName, out Object ptrVar, int errorLog);
}
[ComImport]
[Guid("37D84F60-42CB-11CE-8135-00AA004BB851")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
interface IPersistPropertyBag
{
[PreserveSig]
void InitNew();
[PreserveSig]
void Load(IPropertyBag propertyBag, int errorLog);
[PreserveSig]
void Save(IPropertyBag propertyBag, [InAttribute] bool clearDirty, [InAttribute] bool saveAllProperties);
[PreserveSig]
void GetClassID(out Guid classID);
}
Your activeX control should implement these interfaces. There's one method you need to implement :
void IPersistPropertyBag.Load(IPropertyBag propertyBag, int errorLog)
{
object value;
propertyBag.Read("option1", out value, errorLog);
string parameter = (string)value;
}
Voilà! parameter should be equal to "valuetoRetrieve"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With