PDA

View Full Version : دسترسی به مجموعه ای از تکس باکس ها در ribbonTabItem در ribbonControl از کامپوننت های دات نت بار



behnam-soft
چهارشنبه 01 آبان 1392, 19:57 عصر
سلام خدمت دوستان.
من در یه فرم معمولی، برای اینکه بتونم مثلا تمام مقادیر تکس باکس ها رو با هم جمع کنم، از دستور زیر استفاده می کنم :

foreach (var c in this.Controls)
{
if (c.GetType() == typeof(DevComponents.DotNetBar.Controls.TextBoxX))
sum =(((DevComponents.DotNetBar.Controls.TextBoxX)c).T ext)+ sum;
}

اما زمانی که یه ریبون کنترل به فرمم اضافه می کنم، و بعد تکس باکس ها رو در ریبون تب اون وارد می کنم، کد بالا رو که می نویسم، متاسفانه نمی تونه تکس باکس ها رو پیدا کنه ! البته من به جای کلمه کنترل، کلمه ریبون کنترل و یا ریبون تب رو هم نوشتم اما جواب نداد ! دوستان نمیدونن چطور باید به برنامه بگم که بره اشیاء داخل ریبون تب مثلا 1 رو چک کنه؟

farhad.k.t
چهارشنبه 01 آبان 1392, 21:15 عصر
foreach (Control textboxX in ribbonPanel1.Controls)
{
if (textboxX is TextBox)
sum += double.Parse(textboxX.Text);
}
MessageBox.Show(sum.ToString());
sum = 0;

pedram.11
چهارشنبه 01 آبان 1392, 21:35 عصر
اما زمانی که یه ریبون کنترل به فرمم اضافه می کنم، و بعد تکس باکس ها رو در ریبون تب اون وارد می کنم

سلام خودتون میفرمائید که کنترلهاتون رو در ریبون وارد میکنید نه خود فرم. دستور this.Controls کنترلهای فرم رو بهتون میده نه کنترلهای زیرگروه. برای کنترلهای یه کنترل دیگه باید از اسم همون کنترل استفاده کنید! من خودم نفهمیدم چی گفتم امیدوارم شما متوجه شده باشید.
مثلا بجای:
this.Controls
باید بنویسید:
this.Ribbon1.Controls

behnam-soft
چهارشنبه 01 آبان 1392, 22:01 عصر
سلام، با تشکر از پاسخ شما، من این روش رو هم تست کرده بودم، اما متاسفانه جواب نمیده! و این ارور رو میده:
Error 1 'DevComponents.DotNetBar.RibbonTabItem' does not contain a definition for 'Controls' and no extension method 'Controls' accepting a first argument of type 'DevComponents.DotNetBar.RibbonTabItem' could be found (are you missing a using directive or an assembly reference?) C:\Documents and Settings\Administrator\My Documents\Visual Studio 2008\Projects\comboboxTest\comboboxTest\Form1.cs 22 51 comboboxTest

behnam-soft
چهارشنبه 01 آبان 1392, 22:03 عصر
این کدیه که من استفاده کردم که خطای بالا رو منجر شد: this.ribbonTabItem1.Controls

pedram.11
چهارشنبه 01 آبان 1392, 22:20 عصر
بنده با این کامپوننت کار نکردم اما چیزی بجای Controls باید داشته باشه. برای پیداکردن کد میتونید به قسمت Designer فرمتون برید و کدی که کنترلهای رو به ribbonTabItem1 اضافه میکنه پیدا کنید.
بنده فکر میکنم این کنترلی که شما میفرمایید مثل tabControl باشه. اگه همینطوره توجه کنید هر تب خودش یک کنترل هست. پس اسم تب رو بکار ببرید و نه کنترل اصلی رو

behnam-soft
چهارشنبه 01 آبان 1392, 22:47 عصر
من از این کد هم استفاده کردم اما متاسفته خطای زیر رو میده: foreach (var c in DevComponents.DotNetBar.TabControlPanel)
Error 1 'DevComponents.DotNetBar.TabControlPanel' is a 'type', which is not valid in the given context C:\Documents and Settings\Administrator\My Documents\Visual Studio 2008\Projects\comboboxTest\comboboxTest\Form1.cs 22 43 comboboxTest

behnam-soft
چهارشنبه 01 آبان 1392, 22:49 عصر
من که هر کاری کردم نتونستم درستش کنم، کد دیزاینر رو می ذارم شما اگر مقدور بود براتون یه نگاه کن بهش، مرسی.

// ribbonControl1
//
//
//
//
this.ribbonControl1.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
this.ribbonControl1.CaptionVisible = true;
this.ribbonControl1.Controls.Add(this.ribbonPanel1 );
this.ribbonControl1.Controls.Add(this.ribbonPanel2 );
this.ribbonControl1.Dock = System.Windows.Forms.DockStyle.Top;
this.ribbonControl1.Items.AddRange(new DevComponents.DotNetBar.BaseItem[] {
this.ribbonTabItem1,
this.ribbonTabItem2});
this.ribbonControl1.KeyTipsFont = new System.Drawing.Font("Tahoma", 7F);
this.ribbonControl1.Location = new System.Drawing.Point(0, 0);
this.ribbonControl1.Name = "ribbonControl1";
this.ribbonControl1.Padding = new System.Windows.Forms.Padding(0, 0, 0, 3);
this.ribbonControl1.Size = new System.Drawing.Size(292, 151);
this.ribbonControl1.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManag erControlled;
this.ribbonControl1.SystemText.MaximizeRibbonText = "&Maximize the Ribbon";
this.ribbonControl1.SystemText.MinimizeRibbonText = "Mi&nimize the Ribbon";
this.ribbonControl1.SystemText.QatAddItemText = "&Add to Quick Access Toolbar";
this.ribbonControl1.SystemText.QatCustomizeMenuLab el = "<b>Customize Quick Access Toolbar</b>";
this.ribbonControl1.SystemText.QatCustomizeText = "&Customize Quick Access Toolbar...";
this.ribbonControl1.SystemText.QatDialogAddButton = "&Add >>";
this.ribbonControl1.SystemText.QatDialogCancelButt on = "Cancel";
this.ribbonControl1.SystemText.QatDialogCaption = "Customize Quick Access Toolbar";
this.ribbonControl1.SystemText.QatDialogCategories Label = "&Choose commands from:";
this.ribbonControl1.SystemText.QatDialogOkButton = "OK";
this.ribbonControl1.SystemText.QatDialogPlacementC heckbox = "&Place Quick Access Toolbar below the Ribbon";
this.ribbonControl1.SystemText.QatDialogRemoveButt on = "&Remove";
this.ribbonControl1.SystemText.QatPlaceAboveRibbon Text = "&Place Quick Access Toolbar above the Ribbon";
this.ribbonControl1.SystemText.QatPlaceBelowRibbon Text = "&Place Quick Access Toolbar below the Ribbon";
this.ribbonControl1.SystemText.QatRemoveItemText = "&Remove from Quick Access Toolbar";
this.ribbonControl1.TabGroupHeight = 14;
this.ribbonControl1.TabIndex = 2;
this.ribbonControl1.Text = "ribbonControl1";
//
// ribbonTabItem1
//
this.ribbonTabItem1.Checked = true;
this.ribbonTabItem1.Name = "ribbonTabItem1";
this.ribbonTabItem1.Panel = this.ribbonPanel1;
this.ribbonTabItem1.Text = "ribbonTabItem1";
//
// ribbonPanel1
//
this.ribbonPanel1.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManag erControlled;
this.ribbonPanel1.Controls.Add(this.textBoxX1);
this.ribbonPanel1.Controls.Add(this.buttonX1);
this.ribbonPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.ribbonPanel1.Location = new System.Drawing.Point(0, 53);
this.ribbonPanel1.Name = "ribbonPanel1";
this.ribbonPanel1.Padding = new System.Windows.Forms.Padding(3, 0, 3, 3);
this.ribbonPanel1.Size = new System.Drawing.Size(292, 95);
//
//
//
this.ribbonPanel1.Style.CornerType = DevComponents.DotNetBar.eCornerType.Square;
//
//
//
this.ribbonPanel1.StyleMouseDown.CornerType = DevComponents.DotNetBar.eCornerType.Square;
//
//
//
this.ribbonPanel1.StyleMouseOver.CornerType = DevComponents.DotNetBar.eCornerType.Square;
this.ribbonPanel1.TabIndex = 1;
//
// ribbonTabItem2
//
this.ribbonTabItem2.Name = "ribbonTabItem2";
this.ribbonTabItem2.Panel = this.ribbonPanel2;
this.ribbonTabItem2.Text = "ribbonTabItem2";
//
// ribbonPanel2
//
this.ribbonPanel2.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManag erControlled;
this.ribbonPanel2.Dock = System.Windows.Forms.DockStyle.Fill;
this.ribbonPanel2.Location = new System.Drawing.Point(0, 53);
this.ribbonPanel2.Name = "ribbonPanel2";
this.ribbonPanel2.Padding = new System.Windows.Forms.Padding(3, 0, 3, 3);
this.ribbonPanel2.Size = new System.Drawing.Size(292, 95);

pedram.11
چهارشنبه 01 آبان 1392, 22:54 عصر
در اینجا نوشته:
this.ribbonControl1.Controls.Add(this.ribbonPanel1 );
this.ribbonControl1.Controls.Add(this.ribbonPanel2 );

شما 2تا تب دارید. کنترلهاتون توی این تب هستن، اینو امتحان کنید:
this.ribbonPanel1

behnam-soft
چهارشنبه 01 آبان 1392, 22:59 عصر
قبلا امتحان کردم، این خطا رو میده :
Error 1 foreach statement cannot operate on variables of type 'DevComponents.DotNetBar.RibbonPanel' because 'DevComponents.DotNetBar.RibbonPanel' does not contain a public definition for 'GetEnumerator' C:\Documents and Settings\Administrator\My Documents\Visual Studio 2008\Projects\comboboxTest\comboboxTest\Form1.cs 22 13 comboboxTest

behnam-soft
چهارشنبه 01 آبان 1392, 23:12 عصر
آقا مشکل حل شد! با توجه به اینکه گفتی باید دقیقا به اون کنترلی که شیء ها در اون هستن اشاره کنی، من تکس باکس ها رو گذاشته بودم تو یه گروپ پنل، بنابراین باید دقیقا اسم گروپ پنل رو می آوردم نه تبی که همه اشیاء تو اون هستن !!! هر چند که قائدتا باید وقتی میگی تو این تب بگرد به دنبال تکس باکس، پیدا کنه، چون به نوعی همه اشیاء توی این پنل،زیر مجموعه اون پنل به حساب میان...
با این حال، ممنونم، مرسی.