PDA

View Full Version : سوال: شناخته نشدن listbox در تابع!



aapalireza
دوشنبه 24 آبان 1389, 21:05 عصر
سلام
شاید سوالم خیلی پیش پا افتاده باشه!
شرمنده!
این جور سوالات که از یه سطحی پایین تره با جست و جو پیدا نمیشه...

من یک listbox دارم - می‌خواهم از آن در تابعی که تعریف کرده ام استفاده کنم, ارور میده و listbox مرا نمیشناسه!


listBox1.Items.Add(i);

در:



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace Use_Thread
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
static int i,j;
static Thread t1;

public static void counter1()
{
for(int i=0;i<1000;i++)
{

listBox1.Items.Add(i);


}
}


}
}

mahdi87_gh
دوشنبه 24 آبان 1389, 21:20 عصر
چون شما تابع رو به صورت static تعریف کردید این مشکل پیش میاد. وقتی تابعی رو بصورت استاتیک تعریف میکنید، این تابع بدون اینکه شما آبجکتی از نوع کلاس آن ( همان کلاسی که تابع استاتیک درون آن تعریف شده) بسازید، قابل استفاده خواهد بود. اما شما تا آبجکتی از نوع این فرم نسازید نمیتونید از لیست باکس درون آن استفاده کنید. در نتیجه تناقض دسترسی بوجود میاد

aapalireza
دوشنبه 24 آبان 1389, 22:01 عصر
چون شما تابع رو به صورت static تعریف کردید این مشکل پیش میاد. وقتی تابعی رو بصورت استاتیک تعریف میکنید، این تابع بدون اینکه شما آبجکتی از نوع کلاس آن ( همان کلاسی که تابع استاتیک درون آن تعریف شده) بسازید، قابل استفاده خواهد بود. اما شما تا آبجکتی از نوع این فرم نسازید نمیتونید از لیست باکس درون آن استفاده کنید. در نتیجه تناقض دسترسی بوجود میاد

یعنی باید چه کنم؟!
راحی است که تابع را تغریف کنم, static هم باشه!

Salar Ashgi
دوشنبه 24 آبان 1389, 22:14 عصر
بهتره به این شکل انجام بدید :


public partial class Form1 : Form
{
void Counter1(ListBox list)
{
for (int i = 0; i < 1000; i++)
list.Items.Add(i.ToString());
}

public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
Counter1(listBox1);

}
}


موفق باشید ./