PDA

View Full Version : سوال: تغییر ارتفاع ستون ها با توجه به اطلاعات ورودی در گرید ویو



ostovarit
جمعه 16 اردیبهشت 1390, 13:32 عصر
با سلام و خسته نباشید
در رابطه با تغییر ارتفاع ستون ها با توجه به اطلاعات ورودی در گرید ویو جستجو کردم معمولا گفته شده بود که به وسیله WrapMode = True این کار رو انجام بدید ...اما من میخوام ارتفاع Row بعد از اتمام تایپ با توجه به نوشته وارد شده در Cell زیاد بشه و کل اطلاعات نوشته شده قابل خواندن باشد... ممنون میشم راهنمایی کنید... با تشکر

ali.rezaei7
جمعه 16 اردیبهشت 1390, 20:33 عصر
سلام. خاصیت AutoSizeRowsMode گریدویو رو در حالت DataGridViewAutoSizeRowsMode.AllCells تنظیم کنید.

ostovarit
جمعه 16 اردیبهشت 1390, 23:11 عصر
سلام. خاصیت AutoSizeRowsMode گریدویو رو در حالت DataGridViewAutoSizeRowsMode.AllCells تنظیم کنید.
مهندس جان وقتی این موضوع رو گوگل کردم به این روش که شما گفتی برخوردم اما هر چی تست کردم نشد ... اگر میشه یک سمپل کوچولو واسم بزارید ... یا راه دیگه ای هست بفرمایید.
با تشکر

ali.rezaei7
شنبه 17 اردیبهشت 1390, 00:35 صبح
DataGridView dgv = new DataGridView();
DataTable dt = new DataTable();

dt.Columns.Add("Column1");

dt.Rows.Add("1\n2\n3");
dt.Rows.Add("1\n2");
dt.Rows.Add("1\n2\n3\n4");

this.Controls.Add(dgv);
dgv.DataSource = dt;
dgv.Columns["Column1"].DefaultCellStyle.WrapMode =
DataGridViewTriState.True;

dgv.AutoSizeRowsMode =
DataGridViewAutoSizeRowsMode.AllCells;


مشکلی بود درخدمتم.

ostovarit
شنبه 17 اردیبهشت 1390, 11:29 صبح
DataGridView dgv = new DataGridView();
DataTable dt = new DataTable();

dt.Columns.Add("Column1");

dt.Rows.Add("1\n2\n3");
dt.Rows.Add("1\n2");
dt.Rows.Add("1\n2\n3\n4");

this.Controls.Add(dgv);
dgv.DataSource = dt;
dgv.Columns["Column1"].DefaultCellStyle.WrapMode =
DataGridViewTriState.True;

dgv.AutoSizeRowsMode =
DataGridViewAutoSizeRowsMode.AllCells;


مشکلی بود درخدمتم.

جواب نداد مهندس ...

من میخوام ارتفاع Row بعد از اتمام تایپ با توجه به نوشته وارد شده در Cell زیاد بشه و کل اطلاعات نوشته شده قابل خواندن باشد... این کار خیلی کار خاصی نیست حتما هستن دوستانی که این کارو کرده باشم ... ممنون میشم راهنمایی کنید... با تشکر

پاپستی: عکسی رو در پست یک ضمیمه کردم که بهتر مطلب رو برسونه

ali.rezaei7
شنبه 17 اردیبهشت 1390, 11:59 صبح
سلام ostovarit. بعد از اتمام تایپ و خروج از سلول ارتفاع Update میشه. اکه منظورتون این هست که در هنگام تایپ ارتفاع بروزرسانی بشه، باید از روش های غیر معمول استفاده کنید. چون چنین امکانی در این کنترل وجود نداره.
تنها راهی که داره این هست که ار تابع MeasureString که عضوی از کلاس Graphic هست استفاده کنید، این تابع متنی رو در ورردی می گیره و اندازه اون رو بر میگردونه و می تونید از این طریق اندازه سطر رو تغییر بدید.

ostovarit
شنبه 17 اردیبهشت 1390, 15:28 عصر
سلام ostovarit. بعد از اتمام تایپ و خروج از سلول ارتفاع Update میشه. اکه منظورتون این هست که در هنگام تایپ ارتفاع بروزرسانی بشه، باید از روش های غیر معمول استفاده کنید. چون چنین امکانی در این کنترل وجود نداره.
تنها راهی که داره این هست که ار تابع MeasureString که عضوی از کلاس Graphic هست استفاده کنید، این تابع متنی رو در ورردی می گیره و اندازه اون رو بر میگردونه و می تونید از این طریق اندازه سطر رو تغییر بدید.

دوستان اگر روشی که علی اقا گفتن رو رفتن و نتیچه گرفتن یک سمپل بزارن یا روش دیگه ای بلدن بگن ...
رو MeasureString کار میکنم نتیجه گرفتم اینجا سمپل می زارم.
ممنون

ostovarit
یک شنبه 18 اردیبهشت 1390, 15:47 عصر
خوب من کد زیر رو نوشتم و نتیجه داد لطفا دوستان بهینش کنن ... در کد زیر وقتی کاراکتر ها بیشتر از 15 تا بشه \n به رشته اضافه میکنه و ارتفاع ستون رو دوبرابر میکنه ... این برای کار من اوکی بود اما میشه بهینه تر نوشت.



private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
if (dataGridView1[e.ColumnIndex, e.RowIndex].Value != null && dataGridView1[e.ColumnIndex, e.RowIndex].Value.ToString().Length > 15)
{
dataGridView1.Rows[e.RowIndex].Height = 44;
dataGridView1[e.ColumnIndex, e.RowIndex].Value = dataGridView1[e.ColumnIndex, e.RowIndex].Value.ToString().Substring(0, 15) +
"\n" + dataGridView1[e.ColumnIndex, e.RowIndex].Value.ToString().Substring(15, dataGridView1[e.ColumnIndex, e.RowIndex].Value.ToString().Length - 15);
}
}