Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Indirect reference to controls or binding to arraylist i
Message
General information
Forum:
ASP.NET
Category:
The Mere Mortals .NET Framework
Environment versions
Environment:
C# 2.0
OS:
Windows Server 2003
Network:
Windows 2003 Server
Database:
MS SQL Server
Miscellaneous
Thread ID:
01341965
Message ID:
01342002
Views:
19
Naomi,

Thanks. This got me closer but I'm still missing something, probably because I just barely understand what I'm doing. That thread points to Rick Strahl's blog which offers the following code:
public const BindingFlags MemberAccess = 

      BindingFlags.Public | BindingFlags.NonPublic | 

      BindingFlags.Static | BindingFlags.Instance | BindingFlags.IgnoreCase ;

 

String MyTextBoxName = "txtCompany";

String ValueToSet = "NewValue";

 

// *** Get a reference to the TextBox

TextBox MyTextBox = (TextBox) this.GetType().GetField(MyTextBox,BindingFlags).GetValue(this,MyTextBoxName);

 

MyTextBox.GetType().GetProperty("Text",BindingFlags).SetValue(MyTextBox,ValueToSet,null);
I have checked several times and think I typed in what he suggested accurately. Here's what I tried:
        public const BindingFlags MemberAccess = BindingFlags.Public | BindingFlags.NonPublic |
            BindingFlags.Static | BindingFlags.Instance | BindingFlags.IgnoreCase;

        /// <summary>
        /// Constructor
        /// </summary>
        public PatientMaint(int currentPatientId)
        {
            . . .
            oCoverageType = (CoverageType)this.RegisterBizObj(new CoverageType());
            . . .
            InitializeComponent();
            oCoverageType.GetAllData();


            int CvgTypeCount = oCoverageType.GetRowCount();
            //ArrayList aCvgType = new ArrayList(CvgTypeCount);
            for (int i = 0; i < CvgTypeCount; i = i + 1)
            {
                oCoverageType.DataRow = oCoverageType.DataSet.Tables[0].Rows[i];
                string CvgTypeTextBoxName = "txtCoverage" + i.ToString();
                TextBox CvgTypeTextBox = (TextBox)this.GetType().GetField(CvgTypeTextBox, BindingFlags).GetValue(this, CvgTypeTextBoxName);
                CvgTypeTextBox.GetType().GetProperty("Text", MemberAccess).SetValue(CvgTypeTextBox, oCoverageType.Entity.CoverageType, null);
                //aCvgType.Add(oCoverageType.Entity.CoverageType);
            }
When I try to run this, I get a compile error: 'System.Reflection.BindingFlags' is a 'type' but is used like a 'variable'. Then I tried changing BindingFlags to MemberAccess, thinking that I needed to reference the variable name. When I do that I get the following error: Error 1 The best overloaded method match for 'System.Type.GetField(string, System.Reflection.BindingFlags)' -- Error 2 Argument '1': cannot convert from 'System.Windows.Forms.TextBox' to 'string'

Any help is greatly appreciated.




>See if this thread can help
>Re: Converting a string to an object property Thread #1323589
>
>>I have a Windows form on which I need to display a series of text boxes, each displaying the value of a field from a different row of the dataset. In FoxPro, one way I have done is by using a macro to get an indirect reference to the text box name.
>>
>>For example:
>>
>>
>>* Using the indirect reference
>>lcBaseName = "TypeDesc"
>>lcRowCount = 1
>>use myTable
>>scan
>>    lcCurrentTextBox = lcBaseName + str(lnRowCount)
>>    &lcCurrentTextBox.Value = myTable.TypeDesc
>>endfor
>>
>>
>>
>>In .NET, I tried creating a variable with a type of Control and building it's name property using a counter but I couldn't get that to work.
>>
>>The other way I have done this in FoxPro is to set the ControlSource to an element of an array built from the table. In .NET, I tried creating an arraylist from the table and assigning an element to the BindingSource and the Text properties (not at the same time) with no success.
>>
>>Does anyone have any suggestions? I really don't want to hard code this if I can avoid it.
>>
>>Thanks in advance.
Linda Harmes
HiBit Technologies, Inc.
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform