PDA

View Full Version : حرکت بین سلول های گرید ویو و افزودن خودکار ردیف



hamkelasii
یک شنبه 22 آبان 1390, 10:00 صبح
سلام دوستان . من می خوام واسه درست کردن فاکتورم ، از دیتاگرید ویو استفاده کنم .
چیزی شبیه به فاکتورهای نرم افزار هلو . به طوری که با زدن دکمه اینتر ، به جای رفتن به سطر بعدی به سلول بعدی برم . همچنین ردیف به طور خودکار اضافه بشه .
تو تاپیک نمونه های کوچک ، یکی از دوستان یه dll گذاشته بودن ولی درست کار نمی کنه ..
لطفا کمکم کنین. ممنون

electro_esma
یک شنبه 22 آبان 1390, 10:05 صبح
با سلام دوست من یه تاپیک ردیف واست می ذارم برو نگاه کن فکر کنم هرچی مشکل راجع به گرید ویو داشته باشی به جز تابع پرینتش حل شه.

البته پرینت هم با کریستال راحته ها .


موفق باشی

اگه خواستی دکمه تشکر رو هم بزن....

اینم لینکش (http://barnamenevis.org/showthread.php?245726-مطالبی-کمیاب-در-مورد-Data-Grid-View)

hamkelasii
یک شنبه 22 آبان 1390, 11:18 صبح
ولی مشکل من حل نشد . چون هنوز نمی شه ردیف رو اتوماتیک بنویسه

hamkelasii
پنج شنبه 26 آبان 1390, 09:19 صبح
یعنی کسی تا حالا برنامه حسابدای ننوشته ؟ چرا کمک نمی کنین؟

solaleh
پنج شنبه 26 آبان 1390, 10:13 صبح
اضافه شدن سطر در datagridview به صورت خودکار انجام میشه.به محض اینکه در یک سطر شروع به نوشتن میکنین،خودبه خود سطر بعد ساخته میشه.مگر اینکه insert رو برای datagridview تون بسته باشین.

solaleh
پنج شنبه 26 آبان 1390, 10:36 صبح
class CustomDataGridView : DataGridView
{
protected override bool ProcessDialogKey(Keys keyData)
{
Keys key = (keyData & Keys.KeyCode);
if (key == Keys.Enter)
{
return this.ProcessRightKey(keyData);
}
return base.ProcessDialogKey(keyData);
}
protected override bool ProcessDataGridViewKey(KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
return this.ProcessRightKey(e.KeyData);
}
return base.ProcessDataGridViewKey(e);
}
}

حالا این میشه یه کنترل به نام CustomDataGridView که به toolbox اضافه میشه.به جای datagridview معمولی اینو add کنین.

hamkelasii
شنبه 28 آبان 1390, 08:37 صبح
ممنون از جوابتون . ولی تا اینجاش که مشکلی نبود . چون این کلاس رو خودم هم برداشته بودم . مشکل اینجاست که ردیف رو به صورت خودکار نمی نویسه .

solaleh
شنبه 28 آبان 1390, 08:53 صبح
ممنون از جوابتون . ولی تا اینجاش که مشکلی نبود . چون این کلاس رو خودم هم برداشته بودم . مشکل اینجاست که ردیف رو به صورت خودکار نمی نویسه .
منظورتون از نوشتن ردیف به صورت خودکار چیه؟!!

hamkelasii
شنبه 28 آبان 1390, 09:51 صبح
منظورم اینه که وقتی فرم لود می شه تو اولین سلول گرید عدد یک رو بندازه . وقتی هم که سطر اول کامل پر شد و وارد سطر دوم شدم ، عدد 2 رو بندازه و تا آخر ....
همین

solaleh
شنبه 28 آبان 1390, 10:19 صبح
مطمئن نیستم این راه بهترین راه باشه ولی میتونین یه متغیر سراسری تعریف کنین و در form_Load مقدار سلول موردنظرتونو برابر مقدار اون متغیر قرار بدین،بعد تو رویداد datagridview1_RowsAdded مقدار اون متغیر رو یکی افزایش بدین و value سلول موردنظرتونو برابر اون قرار بدین:
i = i + 1;
datagridview1.Rows[e.RowIndex].Cells[0].Value = i.ToString();

hamkelasii
شنبه 28 آبان 1390, 10:34 صبح
دیگه باید بیخیال بشم ...

wolf_majid
شنبه 28 آبان 1390, 10:50 صبح
دیگه باید بیخیال بشم ...

چرا ؟
روش حل پست قبل کارت رو راه میندازه
یا این :
public Form1()
{
InitializeComponent();
dataGridView1.Rows[0].Cells[0].Value = 1;
}

private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
dataGridView1.Rows[e.RowIndex].Cells[0].Value = dataGridView1.Rows.Count ;
}