Hi Tim,
There is a C# "using" keyword, but I'm not sure it works that way. Even if
it did, I don't think it would use the proper type because OLEObject doesn't
have the properties I need to use, where VB probably treats everything as a
var. I did finally figure it out last night though what the proper cast is.
If I used "Forms.Textbox.1" as my class, I needed to cast as below. BTW,
MSForm is part of the "Microsoft Forms 2.0 Object Library" for those who have
trouble finding it. The only remaining issue I'm having a problem with is
that a textbox added this way seems to ignore the BackStyle property. It
always remains opaque even when toggling it manually through Excel--I'm still
trying to figure that one out. (I'm using Office 2007 and VS2008).
using MSForm = Microsoft.Vbe.Interop.Forms;
Excel.OLEObject ole =
((Excel.OLEObjects)wsTemplate.OLEObjects(Missing.Value)).Add("Forms.Textbox.1",
Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
Missing.Value, 15, 15, 100, 20);
MSForm.TextBox tb = (MSForm.TextBox)(ole.Object);
tb.Text = "High Risk";
tb.Font.Name = "Arial";
tb.Font.Size = 16;
tb.SpecialEffect =
Microsoft.Vbe.Interop.Forms.fmSpecialEffect.fmSpecialEffectFlat;
tb.BackStyle = Microsoft.Vbe.Interop.Forms.fmBackStyle.fmBackStyleTransparent;
ole.PrintObject = true;
"Tim Williams" wrote:
> doesn't C# have "using" for this ?
>
> http://msdn.microsoft.com/en-us/library/yh598w02(VS.80).aspx
>
> Tim
>
> "Jeff Donkersgoed" <(E-Mail Removed)> wrote in
> message news
3C0723E-1122-4BA9-8593-(E-Mail Removed)...
> >I used the following line to add a label (or textbox, etc.) to my
> >worksheet,
> > and I can see it in Excel.
> >
> > Excel.OLEObject ole =
> > ((Excel.OLEObjects)wsTemplate.OLEObjects(Missing.Value)).Add("Forms.Label.1",
> > Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
> > Missing.Value, 15, 15, 100, 20);
> >
> > The problem is that it just says "Label1" for the text. How can I go
> > about
> > changing it and the font as well? I can't figure out how to cast the
> > ole.Object to anything which is what I think I need to do.
> >
> > I've see lots of VBA code that just uses "With" as below, but can I do
> > something similar in C#?
> >
> > Dim Lbl As OLEObject
> > Set Lbl = ActiveSheet.OLEObjects.Add(ClassType:="Forms.Label.1",
> > Link:=False, _
> > DisplayAsIcon:=False, Left:=232.5, Top:=241.5, Width:=72, Height:=18)
> >
> > With Lbl
> > .Name = "ttt"
> > .Object.Caption = "p.sub new control"
> > .Object.Font.Bold = True
> > .Object.BackColor = RGB(255, 0, 0)
> > End With
> >
> > Any help would be appreciated.
>
>
>