نمایش نتایج 1 تا 13 از 13

نام تاپیک: ذخیره داده های یک textbox که به صورت dynamic ساخته می شود

  1. #1
    کاربر تازه وارد آواتار daneshjo IT
    تاریخ عضویت
    خرداد 1386
    محل زندگی
    تهران
    پست
    55

    Question ذخیره داده های یک textbox که به صورت dynamic ساخته می شود

    باسلام،

    برنامه ای نوشتم که در آن از کاربر تعداد Textbox هایی که می خواهد ساخته شود ، پرسیده شده ، سپس Textbox ها ساخته شده و کاربر می تواند اطلاعاتی را در آن وارد کند و با زدن دکمه Save اطلاعات در یک فایل dat ذخیره میشود. (اطلاعات قبلی فایل نیز حفظ میشود)

    مشکل من در ذخیره اطلاعات است ، چگونه می توانم اطلاعات ، textbox هایی که به صورت dynamic ساخته میشوند را ذخیره کنم؟

  2. #2

    نقل قول: ذخیره داده های یک textbox که به صورت dynamic ساخته می شود

    کدی که باهاش کنترل می سازی و اینجا بذار

  3. #3

    نقل قول: ذخیره داده های یک textbox که به صورت dynamic ساخته می شود

    همه کنترلهای TextBox رو بصورت یک Array از Object ها بساز و مثل یک آرایه هر کدوم رو که می خوای (و یا همه) رو ذخیره کن

  4. #4
    کاربر دائمی آواتار saied_genius
    تاریخ عضویت
    آبان 1386
    محل زندگی
    IRAN فعلاً ...
    پست
    595

    نقل قول: ذخیره داده های یک textbox که به صورت dynamic ساخته می شود

    من نمي دانم دقيقاً به چه صورتي داري textbox ها را مي سازي ولي

    با foreach تو فرم بگرد و با نام textbox ها چک کن و text آنها را بخوان.

    موفق باشيد.

  5. #5
    کاربر تازه وارد آواتار daneshjo IT
    تاریخ عضویت
    خرداد 1386
    محل زندگی
    تهران
    پست
    55

    نقل قول: ذخیره داده های یک textbox که به صورت dynamic ساخته می شود

    برای پیدا کردن Textbox ها با foreach مشکل حل میشود.

    در کد زیر که برای قسمت ذخیره نوشتم، می خواهم که کلیه textbox هایی که name آن ها با "txtBox" شروع میشود را در یک فایل dat ذخیره کند ، و اطلاعات قبلی فایل نیز حفظ شود. اما درست ذخیره نمیکند و اطلاعات اولیه فایل هم از دست میرود.


    foreach(Control x in this.Controls)
    {
    if (x is TextBox )
    {
    if (x.Name == "txtBox")
    {
    string fname = "F:/a.dat";
    System.IO.StreamWriter objWriter;
    objWriter = new System.IO.StreamWriter(fname);
    objWriter.WriteLine(x);
    objWriter.Write(objWriter.NewLine);
    objWriter.Close();
    }

    }

    }

  6. #6
    کاربر دائمی آواتار saied_genius
    تاریخ عضویت
    آبان 1386
    محل زندگی
    IRAN فعلاً ...
    پست
    595

    نقل قول: ذخیره داده های یک textbox که به صورت dynamic ساخته می شود

    اينجوري تغييرش بده ، مشکلت حل ميشه

    foreach (Control x in this.Controls)
    {
    if (x is TextBox)
    {
    if (x.Name == "txtBox")
    {
    string fname = "F:\\a.dat";
    System.IO.FileInfo fi = new System.IO.FileInfo(fname);
    System.IO.StreamWriter objWriter = fi.AppendText();
    objWriter.WriteLine(x);
    objWriter.Write(objWriter.NewLine);
    objWriter.Close();
    }

    }

    }


    موفق باشيد.

  7. #7
    کاربر تازه وارد آواتار daneshjo IT
    تاریخ عضویت
    خرداد 1386
    محل زندگی
    تهران
    پست
    55

    نقل قول: ذخیره داده های یک textbox که به صورت dynamic ساخته می شود

    مشکل حل شد ، فقط برای اینکه textbox هایی را ذخیره کند که نام آن ها با "txtBox" شروع میشود ، چه کاریی باید انجام بدم؟

    با if (x.Name == "txtBox") جواب نمی دهد؟

  8. #8
    کاربر دائمی آواتار saied_genius
    تاریخ عضویت
    آبان 1386
    محل زندگی
    IRAN فعلاً ...
    پست
    595

    نقل قول: ذخیره داده های یک textbox که به صورت dynamic ساخته می شود

    اين هم راه حل:

                foreach (Control x in this.Controls)
    {
    if (x is TextBox)
    {
    if (x.Name.StartsWith("txtBox"))
    {
    string fname = "F:\\a.dat";
    System.IO.FileInfo fi = new System.IO.FileInfo(fname);
    System.IO.StreamWriter objWriter = fi.AppendText();
    objWriter.WriteLine(x);
    objWriter.Write(objWriter.NewLine);
    objWriter.Close();
    }
    }
    }


    موفق باشيد.

  9. #9
    کاربر دائمی آواتار اَرژنگ
    تاریخ عضویت
    آبان 1384
    محل زندگی
    arjang8000@gmail.com
    پست
    2,736

    نقل قول: ذخیره داده های یک textbox که به صورت dynamic ساخته می شود

    نقل قول نوشته شده توسط Aidin مشاهده تاپیک
    همه کنترلهای TextBox رو بصورت یک Array از Object ها بساز و مثل یک آرایه هر کدوم رو که می خوای (و یا همه) رو ذخیره کن
    اینطوری Type Safety از دست نمیره؟

  10. #10
    کاربر دائمی آواتار اَرژنگ
    تاریخ عضویت
    آبان 1384
    محل زندگی
    arjang8000@gmail.com
    پست
    2,736

    نقل قول: ذخیره داده های یک textbox که به صورت dynamic ساخته می شود

    حداقل جواب:


    private void SaveTextBoxesWithTheirNamestartingWithtxtBox()
    { (from box in this.Controls.OfType<TextBox>()
    where box.Name.StartsWith("txtBox")
    select box).ToList<TextBox>().ForEach(f => SaveToFile(f, "F:\\a.dat"));
    }

    private void SaveToFile(object obj, string fileName)
    {
    System.IO.FileInfo fi = new System.IO.FileInfo(fileName);
    using( System.IO.StreamWriter streamWriter = fi.AppendText() )
    {
    streamWriter.WriteLine(obj);
    streamWriter.Write(streamWriter.NewLine);
    }
    }
    اشکالات جوابهایه پیشین:
    ا.نداشتن ایمنی نوع Type Safety
    ۲.بسته نشدن StreamWriter اگر با اکسپشن مواجه بشیم
    ۳.باعث بالا بردن اطلاعات کاربران نمیشه، از روشی که شخصا استفاده میکنیم کمتر نباید فرستاد، تازه‌کارها قابلیت یادگیری بهترین روشها را دارند، باید از بهترین جوابی که در زمان کنونی موجود است کمتر بهشان ندیم.
    ۴.استفاده از foreach دیگر قدیمی شده، استفاده از لامبدا اکسپرشن را به استفاده از ترجیح بدیم.

    اشکالات این جواب:
    ۱.این یک روش شئیگرائی نیست، فقط با صدا زدن متدها کاری را انجام میده
    ۲.بدانه دانستن دلیل اینکه چرا یکی میخواهد مقدایر تکست باکسهایی را که با یک رشته بخصوص شروع میشند را ذخریه کنه، یک جواب سمبل شده که با روشهایه اصولی که میشه برایه حل مشکل واقعی استفاده بشه مغایرت دارد.

    برتریهایه این جواب:
    ۱.قابل استفاده بودن از هر فرمی ، دوباره تمام منطق را کد نمیکنیم.
    ۲.مونولیتیک نیستش، یعنی اینکه یک چیز گنده را به هم نبافتیم، قابلیت استفاده شدن برایه کارهایه دیگر را به دست میده.

    اگر هر کسی اشکالی برایه این جواب به فکرش بیاد لطفاً از ما دریغ نکنید، اگر این جواب جایه سوالی باز میکند لطفاً بپرسید.
    آخرین ویرایش به وسیله اَرژنگ : پنج شنبه 07 آبان 1388 در 09:33 صبح

  11. #11
    کاربر تازه وارد آواتار daneshjo IT
    تاریخ عضویت
    خرداد 1386
    محل زندگی
    تهران
    پست
    55

    نقل قول: ذخیره داده های یک textbox که به صورت dynamic ساخته می شود

    از پاسخ کاملی که دادین ، تشکر میکنم .

    اگر بخواهم که فایل a.dat را درجایی قرار بدهم که Exe برنامه در آن جا قرار دارد ، چه کاری باید انجام دهم؟! (یعنی همیشه اول جایی که exe برنامه قرار دارد را پیدا کند و سپس فایل Dat را در آن جا ذخیره کند)

  12. #12
    کاربر دائمی آواتار saied_genius
    تاریخ عضویت
    آبان 1386
    محل زندگی
    IRAN فعلاً ...
    پست
    595

    نقل قول: ذخیره داده های یک textbox که به صورت dynamic ساخته می شود

    Application.StartupPath + "\\a.dat";


    موفق باشيد.

  13. #13
    کاربر تازه وارد آواتار daneshjo IT
    تاریخ عضویت
    خرداد 1386
    محل زندگی
    تهران
    پست
    55

    نقل قول: ذخیره داده های یک textbox که به صورت dynamic ساخته می شود

    در رابطه با کدی که نوشتید:

    چرا از 2 تا تابع استفاده کردید؟!
    1) ذخیره اطلاعات textbox و ریختن در فایل a.dat
    2) تابع ذخیره در فایل که 2 تا مقدار میگیرد.

    کلا در رابطه با این کاری که انجام دادین بیشتر توضیح دهید.

    کد نهایی که من در برنامه قرار دادم در ادامه نوشتم:
    *streamwrite هم در انتهای برنامه بسته شده است.
    *مشکلات دیگری هم که از نظر شما وجود دارد ، لطفا بر روی کد توضیح دهید ،
    ( لطفا اصطلاحاتی که استفاده میکنید را انگلیسی تایپ کنید)

    باتشکر،


    private void buttonsave_Click(object sender, EventArgs e)
    {
    string fname = Application.StartupPath + "\\a.dat";
    System.IO.StreamWriter objWriter;
    objWriter = new System.IO.StreamWriter(fname , true);

    foreach(Control x in this.Controls)
    {
    if (x is TextBox)
    {
    objWriter.WriteLine(x.Text);
    objWriter.Write(objWriter.NewLine);
    }
    }
    objWriter.Close();
    }

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •