Datagrid

9up

Active Member
سلام خدمت دوستان
وقت شما بخیر

در مورد ایجاد دیتاگرید و طریقه ثبت دیتا و ذخیره آن در ویژوال استودیو 2010 به زبان بیسیک نیاز به راهنمایی دارم.

این تصویر رو با آفیس درست کردم که مفهوم سوالم رو برسونم. یعنی من چنین چیزی رو در محیط ویژوال بیسیک میخوام درست کنم.

10 تا متغیر دارم، چطور باید این 10 تا متغیر رو به ترتیب قرار داد توی سطرهای مربوط از 1 تا 10

و چطور میشه این متغیرها رو توی یه تکست ذخیره کرد
با تشکر.

Untitled.jpg
 

the_king

مدیرکل انجمن
سلام خدمت دوستان
وقت شما بخیر

در مورد ایجاد دیتاگرید و طریقه ثبت دیتا و ذخیره آن در ویژوال استودیو 2010 به زبان بیسیک نیاز به راهنمایی دارم.

این تصویر رو با آفیس درست کردم که مفهوم سوالم رو برسونم. یعنی من چنین چیزی رو در محیط ویژوال بیسیک میخوام درست کنم.

10 تا متغیر دارم، چطور باید این 10 تا متغیر رو به ترتیب قرار داد توی سطرهای مربوط از 1 تا 10

و چطور میشه این متغیرها رو توی یه تکست ذخیره کرد
با تشکر.

مشاهده پیوست 95671

مقادیر ستون سمت راست که مربوط به Time است رو بجز سطر نهایی که مجموعه شان است، در یک آرایه قرار می دهید :
کد:
Dim times() As Single = {2, 1.5, 1.145, 1.35, 1.05, 1.45, 1.5, 1.25, 1, 1.005}

یک کنترل DataGridView روی فرم قرار می دهید که مقادیر داخلش نمایش داده شوند. برای اینکه DataGridView مورد نظر دو ستون داشته باشه هم می توانید
در هنگام طراحی فرم تنظیم اش کنید و هم می توانید با کد نویسی در هنگام اجرای برنامه تنظیم اش کنید.
کد:
        DataGridView1.Columns.Clear()
        DataGridView1.Columns.Add("Column1", "")
        DataGridView1.Columns.Add("Column2", "Time")
        DataGridView1.Columns("Column2").DefaultCellStyle.Format = "0.000"

می توانید به کاربر اجازه بدهید که سطر های جدیدی به DataGridView اضافه کند (یک سطر خالی همیشه در انتهای آن وجود دارد)
یا این قابلیت ویرایشی را غیر فعال کنید.

برای درج کردن مقادیر داخل آرایه در DataGridView به یک حلقه نیاز دارید :
کد:
        For Each time As Single In times
            DataGridView1.Rows.Add(DataGridView1.RowCount + 1, time)
        Next

برای محاسبه کردن مجموع ستون Time نیز از یک حلقه استفاده خواهد شد :
کد:
        Dim sum As Single = 0
        For i As Integer = 0 To DataGridView1.RowCount - 1
            sum += DataGridView1.Rows(i).Cells("Column2").Value
        Next

برای ذخیره کردن مقادیر در یک فایل متنی :
کد:
Imports System.IO
کد:
       Dim sum As Single = 0, time As Single
        Using writer As New StreamWriter("C:\sample.txt")
            writer.WriteLine("{0}{1}{2}", "", vbTab, "Time")
            For i As Integer = 0 To DataGridView1.RowCount - 1
                time = DataGridView1.Rows(i).Cells("Column2").Value
                writer.WriteLine("{0}{1}{2:0.000}", i + 1, vbTab, time)
                sum += time
            Next
            writer.WriteLine("{0}{1}{2:0.000}", "Total Time", vbTab, sum)
        End Using

برای خواندن محتویات از داخل یک فایل متنی :
کد:
        Dim time As Single, text As String, i As Integer = 0
        DataGridView1.Rows.Clear()
        Using reader As New StreamReader("C:\sample.txt")
            Do Until reader.EndOfStream
                text = reader.ReadLine()
                If text.StartsWith(i.ToString()) Then
                    time = Val(text.Remove(0, i.ToString().Length).Trim(" ", vbTab))
                    DataGridView1.Rows.Add(i, time)
                End If
                i += 1
            Loop
        End Using

یک پروژه کامل ضمیمه این پست می باشد :
مشاهده پیوست TimeSumInDatagGridView.zip
 
  • Like
Reactions: 9up

9up

Active Member
با سلام مجدد

یه نمونه مثال از پرینت datagrid فارسی هم بزارید خیلی ممنون میشم. طوری که بشه فونت و اندازه اون رو تغییر داد. البته نه توسط کاربر. می خوام به طور پیش فرض نوع و سایز فونت رو عوض کنم.
تعداد ستونها 10تاست و سطرها هم از 100 تجاوز نمیکنه.
ممنون میشم راهنمایی کنید.
 

9up

Active Member
تونستم از دیتاگرید پرینت بگیرم، ولی جدول برعکس پرینت میشه و فونتش هم اصلا خوانه نیست و نصف جدول هم توی صفحه نیست و پرینت نمیشه.
لطفا راهنماییم کنید شمارو به خدا.
 

جدیدترین ارسال ها

بالا