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

نام تاپیک: متن فارسی نوشته شده دریک تکست باکس چند خط است

  1. #1
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    بهمن 1384
    محل زندگی
    اصفهان
    پست
    183

    Tick متن فارسی نوشته شده دریک تکست باکس چند خط است

    سلام
    چطور میشه فهمید متن فارسی نوشته شده دریک تکست باکس (یا لیبل یا یک فیلد رشته ای در کریستال ریپورت) چند خط است؟
    شاید به نظر خیلی ساده برسه(برای خودم اول همینطور بود)ولی الان برام به یه مشکل سخت تبدیل شده.
    لطفا کمک کنید
    ممنون

  2. #2
    تمام کاراکترهارا باید تک تک بخوانیدو کد آنهارااستخراج کنید. هرکد13 که دستور کلید اینتر می باشد یک خط جدید ایجاد کرده است که باشمارش آنها می توان تعداد خطوط را به دست آورد.

  3. #3
    برای ایجاد سطر جدید ، نیازی به وجود Enter در متن نیست و اگه خاصیت AutoSize آن کنترل False باشد ، کنترل متن را در سطرهای جدید میشکند.

  4. #4
    کاربر دائمی آواتار MH2538
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    No Man Land
    پست
    537
    برای textbox می‌تونی از دستور زیر استفاده کنی (البته اگر wordwrap رو برابر true قرار بدی نتیجه بر اساس n/ محاشبه می شه نه اون چیزی که نمایش داده می‌شه)

    MessageBox.Show(textBox1.Lines.Length.ToString());

    برای Label‌هم می‌تونی به برنامه‌ات یک کلک کوچک بزنی.

    TextBox t = new TextBox();
    t.Size = label1.Size;
    t.Text = label1.Text.Trim();
    MessageBox.Show(t.Lines.Length.ToString());

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

  5. #5
    اگه WordWrap برابر True باشه که متن را بر اساس Size کنترل بشکند ، نمی توان از Lines.Lenght استفاده کرد. Lines.Lenght تعداد سطرها را در صورتی که Enter زده شده باشد رو برمیگردونه ولی اگه توسط خود کنترل Wrap بشه ، بحساب نمیاد.

  6. #6
    کاربر دائمی
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    تهران
    پست
    1,629
    با سلام
    یه راه دیگه هم داره که من اینو ترجیح مى‌دم.

    string[] iStrArray = txtMyText.Text.Split('\n\);

    حالا کافیه iStrArray.Length رو یکى بهش اضافه کنى، مى‌شه تعداد سطرها.

    صبا صبوحى

    پ.ن: البته به شرط این که Enter زده شده باشه.

  7. #7
    تمام اینها بشرطیه که با n\ یا r\ در مت موجود باشه ، ولی خاصیت Wrap کنترل در هنگام شکستن متن در خطهای جدید ، از اینها استفاده نمیکنه.

  8. #8
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    بهمن 1384
    محل زندگی
    اصفهان
    پست
    183
    سلام
    با تشکر از همه دوستان
    فکر کنم سوالم را یه کم ناقص نوشتم. ببینید عزیزان من یه برنامه کتابداری نوشتم در یه قسمت از این برنامه باید کارتهای کتاب ( که حتما همتون در کتابخانه موقع پیدا کردن کتاب اون را دیدن) چاپ بشه. اطلاعات ثبت شده در سیستم به شکل خاصی پشت سرهم چیده می شود(چندین رشته با هم جمع می شود) . حال موقع چاپ این اطلاعات در یک فیلد string کرستال قرار می گیرد.برای کتابهایی که اطلاعتشان زیاد نیست مشکل نداره . ولی اگه اطلاعات بیشتر از اندازه یه کارت بشه باید دو تا کارت برای یک کتاب چاپ کرد . پس بادید قبل از چاپ اندازه متن بررسی بشه و اگر بیشتر از یه کارت میشه اون را اصلاح کرد.
    مشکل تو همین قسمت آخره یعنی تشخصی تعداد خطوط عبارت موقع بررسی تعداد کارت لازم.
    من خودم راه های مختلفی را امتحان کردم ولی نتیجه نگرفتم .مثلا شمردن تعداد کاراکتر هیچ کمکی نمیکنه چون اندازه حروف فارسی مثل حروف لاتین مساوی نیست مثلا تو یه خط میشه 50 تا حرف ک نوشت ولی برای حرف ی این تعداد 90 کاراکتر در یک خط است.
    از توجه شما ممنونم

  9. #9
    نقل قول نوشته شده توسط ESG_Esfahan مشاهده تاپیک
    سلام
    چطور میشه فهمید متن فارسی نوشته شده دریک تکست باکس (یا لیبل یا یک فیلد رشته ای در کریستال ریپورت) چند خط است؟
    شاید به نظر خیلی ساده برسه(برای خودم اول همینطور بود)ولی الان برام به یه مشکل سخت تبدیل شده.
    لطفا کمک کنید
    ممنون




    [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
    static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
    const uint EM_GETLINECOUNT = 0xBA;
    IntPtr wp=IntPtr.Zero;
    IntPtr lp=IntPtr.Zero;



    این هم طریقه استفاده




    IntPtr lines = SendMessage(textBox1.Handle, EM_GETLINECOUNT,wp,lp);
    MessageBox.Show(lines.ToInt32().ToString());



    textbox1 همون TextBox ای هست که میخوای تعداد خطوط را به دست بیاری

    مجموعه آموزشی Asp.Net Core Mvc کاملا به زبان فارسی(21 ماژول و 15 ساعت فیلم آموزشی همراه با سورس کامل تمرینات و پروژه عملی انجام شده در طول آموزشی)
    مشاهده جزئیات در آدرس http://www.mkiani.ir/blog/content/53084


    وب سایت : http://www.mkiani.ir
    پست الکترونیک : mkiani3000@gmail.com

    موفق و پیروز باشید.
    مهدی کیانی


  10. #10
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    بهمن 1384
    محل زندگی
    اصفهان
    پست
    183
    خیلی خیلی ممنونم . دقیقا همون چیزیه که لازم داشتم
    امیدوارم بتونم جبران کنم
    تشکر

  11. #11
    نقل قول نوشته شده توسط ESG_Esfahan مشاهده تاپیک
    خیلی خیلی ممنونم .

    تشکر
    خواهش می کنم

    نقل قول نوشته شده توسط ESG_Esfahan مشاهده تاپیک


    دقیقا همون چیزیه که لازم داشتم
    خدا را شکر. خوشحالم که تونستم به یک گروه مبتکر همشهری کمک کنم
    نقل قول نوشته شده توسط ESG_Esfahan مشاهده تاپیک
    امیدوارم بتونم جبران کنم
    می تونم شماره حساب بدم. البته با پی ام خصوصی

    مجموعه آموزشی Asp.Net Core Mvc کاملا به زبان فارسی(21 ماژول و 15 ساعت فیلم آموزشی همراه با سورس کامل تمرینات و پروژه عملی انجام شده در طول آموزشی)
    مشاهده جزئیات در آدرس http://www.mkiani.ir/blog/content/53084


    وب سایت : http://www.mkiani.ir
    پست الکترونیک : mkiani3000@gmail.com

    موفق و پیروز باشید.
    مهدی کیانی


  12. #12
    بعضی از دوستان ظاهرا در استفاده از کدی که من فرستادم با مشکل بر خوردند که احتمالا مشکلاشن هم در اضافه نکردن کد زیر بوده


    using System.Runtime.InteropServices;


    یه نمونه برنامه هم attach می کنم
    موفق باشید
    فایل های ضمیمه فایل های ضمیمه

    مجموعه آموزشی Asp.Net Core Mvc کاملا به زبان فارسی(21 ماژول و 15 ساعت فیلم آموزشی همراه با سورس کامل تمرینات و پروژه عملی انجام شده در طول آموزشی)
    مشاهده جزئیات در آدرس http://www.mkiani.ir/blog/content/53084


    وب سایت : http://www.mkiani.ir
    پست الکترونیک : mkiani3000@gmail.com

    موفق و پیروز باشید.
    مهدی کیانی


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

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