PDA

View Full Version : مبتدی: مشکل Runtime error برای control.find



hasti19
چهارشنبه 24 اردیبهشت 1393, 14:32 عصر
سلام.من 16 تا txtBox گذاشتم و میخوام عددهای واردشده توسط کاربر رو داخل آرایه a ذخیره کنم.اما با این خطا مواجه شدم.لطفا راهنمایی ام کنید.درضمن نحوه ی کار و پارامتر های تابع control.find رو هم توضیح بدید.
119012

Saeed-CANcel
چهارشنبه 24 اردیبهشت 1393, 14:38 عصر
خود کنترل textbox هر چیزی که درونش قرار بگیرد رو به عنوان آرایه در نظر میگیره...

hasti19
چهارشنبه 24 اردیبهشت 1393, 14:47 عصر
خب من هرکدام از این رشته ها (که یک عدد است) رو با Convert.ToInt16 به عدد int تبدیل کردم.اشتباهه؟

Saeed-CANcel
چهارشنبه 24 اردیبهشت 1393, 14:59 عصر
درستِ...

کل کد هاتو اینجا کپی کن!!!

hasti19
چهارشنبه 24 اردیبهشت 1393, 15:08 عصر
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace m2m_24ordi_8puzzle
{
public partial class Form1 : Form
{
static public int[] goal = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
static public int[] a = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };

public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
int count = 0;
for (int i = 0; i < 16; i++)
{

Control c = Controls.Find("txtBox" + count.ToString(), false)[0];
a[i] = Convert.ToInt16(c.Text);
count++;

}
for (int i = 0; i < 16; i++)
MessageBox.Show(a[i].ToString());
}
}
}

Saeed-CANcel
چهارشنبه 24 اردیبهشت 1393, 15:28 عصر
اینا چی هستن الان؟؟؟:متفکر:
کد هات بهم ریختن!!!
این کد نگا:

int[] arr={convert.toint16(txt1.text),convert.toint16(tx t2.text),...}


خوده textbox میشن خونه های آرایه...
درست مثه یه خونه آرایه معمولی!!!

khokhan
چهارشنبه 24 اردیبهشت 1393, 15:35 عصر
خب من هرکدام از این رشته ها (که یک عدد است) رو با Convert.ToInt16 به عدد int تبدیل کردم.اشتباهه؟

.................................................. .................................................. ......................................:متفکر:


int[] value = new int[82];
for (int x = 1; x < 4; x++)
{
TextBox inputTextBox = (TextBox)this.Controls["textBox" + x.ToString()];
value[x] = Convert.ToInt32(inputTextBox.Text);
MessageBox.Show(value[x].ToString());
}

hasti19
چهارشنبه 24 اردیبهشت 1393, 15:47 عصر
اینا چی هستن الان؟؟؟:متفکر:
کد هات بهم ریختن!!!
این کد نگا:

int[] arr={convert.toint16(txt1.text),convert.toint16(tx t2.text),...}


خوده textbox میشن خونه های آرایه...
درست مثه یه خونه آرایه معمولی!!!


اگه بخواهیم با control.find بنویسیم چه طوری میشه؟

hasti19
چهارشنبه 24 اردیبهشت 1393, 15:50 عصر
.................................................. .................................................. ......................................:متفکر:


int[] value = new int[82];
for (int x = 1; x < 4; x++)
{
TextBox inputTextBox = (TextBox)this.Controls["textBox" + x.ToString()];
value[x] = Convert.ToInt32(inputTextBox.Text);
MessageBox.Show(value[x].ToString());
}

بازم runTime error داره!
119018

khokhan
چهارشنبه 24 اردیبهشت 1393, 16:05 عصر
بازم runTime error داره!


.................................................. ................

rahnema1
چهارشنبه 24 اردیبهشت 1393, 16:22 عصر
این جور هم میشه

using System.Linq;
//...
var txbx=this.Controls.Cast<Control>().Where(c => c.GetType()==typeof(TextBox)).Select(t=>t).OrderBy(t=>t.Name).ToList();
int[] a= txbx.Select(t=>(int.TryParse(t.Text,out k)?k:0)).ToArray();

hasti19
چهارشنبه 24 اردیبهشت 1393, 16:40 عصر
این جور هم میشه

using System.Linq;
//...
var txbx=this.Controls.Cast<Control>().Where(c => c.GetType()==typeof(TextBox)).Select(t=>t).OrderBy(t=>t.Name).ToList();
int[] a= txbx.Select(t=>(int.TryParse(t.Text,out k)?k:0)).ToArray();


خیلی ممنون.میشه نحوه کار این کد رو توضیح بدید؟ من هیچی ازش نمی فهمم.:متفکر:

rahnema1
چهارشنبه 24 اردیبهشت 1393, 16:44 عصر
این یک پر سو جوی linq هست به همراه استفاده از عبارت لاندا در پست آخر این تاپیک کمی توضیح دادم:
http://barnamenevis.org/showthread.php?451312
فقط بگم خط اول کنترل ها را انتخاب می کنه و اونهایی که textbox هستند را از اونها میکشه بیرون و سپس بر اساس نام اونها را مرتب می کنه و در یک لیست نگهداری می کنه به نام txbx
خط دوم هم مقادیر تکست موجود در تکست باکسها را تبدیل به آرایه Int میکنه

hasti19
چهارشنبه 24 اردیبهشت 1393, 16:44 عصر
.................................................. ................


خیلی ممنون کد شما درست کار می کنه. اما وقتی textBox ها رو توی group می گذارم RunTimeError میده. چرا؟

hadi46
چهارشنبه 24 اردیبهشت 1393, 16:52 عصر
به جای this اسم group رو بزار درست میشه