PDA

View Full Version : آموزش: نوشتن متن چند خطی در messagebox



birtemp
سه شنبه 21 آذر 1391, 11:29 صبح
متن چند خطی در کادر Messagebox

سلام. سورس کدی که امروز قرار دادم می تونه یه متن رو تو کادر Messagebox به صورت چند خطی نشون بده. شاید بعد از اجرای کد بگید با یه روش ساده هم میشه اینکار رو کرد. بله حق با شماست. ولی تو این سورس کد در واقع شما به نحوی یه کادر Messagebox سفارشی درست می کنید. از قابلیت های این کادر می تونم به تعیین اندازه توسط تعداد کاراکترهای وارده و تنظیم فونت دلخواه برای کادر اشاره کنم.
سورس کامل برنامه :

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Textbox_multiline
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
// String
string sss = "برنامه نویسی حرفه ای فقط در 'پ' پرولرن خلاصه می شود | www.Prolearn-vs.com (http://www.Prolearn-vs.com) | آموزش زبان های برنامه نویسی";
// Return The String with Font And Size
string Ret = lineStringAnalys(sss, 100, new Font("tahoma", 11, FontStyle.Bold));
MessageBox.Show(Ret);
this.Close();
}

private string lineStringAnalys(string _str, int _size, Font _font)
{
string NewStr = _str;
// If do not need to Check
if (TextRenderer.MeasureText(_str, _font).Width + 5 < (_size))
return _str; // Retun
int p1 = 0, p2 = 0;
for (int i = 0; i < _str.Length; i++) // Check char by char the string
{
p2++;
try
{
if (p1 + p2 > _str.Length)
break;
if (TextRenderer.MeasureText(_str.Substring(p1, p2), _font).Width + 5 >= (_size))
{
int aaa = TextRenderer.MeasureText(_str.Substring(p1, p2), _font).Width;
string bbbb = _str.Substring(p1, p2);
int y = i, count = 0;
while (_str.Substring(y, 1) != " ") // look for the last word
{
y--;
count++;
if (y == 0 || y <= p1) // if not found word
{
count = 0;
break;
}

}
p2 -= count;
NewStr = NewStr.Insert(p1 + p2, "\n");
p1 += p2 + 1;

p2 = 0;
i -= count;
}
}
catch
{
MessageBox.Show(i.ToString());
}

}
return NewStr;
}
}
}


خروجی برنامه :
http://www.prolearn-vs.com/wp-content/uploads/2012/12/messagebox-multiline-word-wrap.jpg (http://www.prolearn-vs.com/wp-content/uploads/2012/12/messagebox-multiline-word-wrap.jpg)
نمونه (http://www.prolearn-vs.com/wp-content/uploads/2012/12/messagebox-multiline-www.prolearn-vs.com_.rar)
منبع : پرولرن (http://www.prolearn-vs.com/multi-line-and-word-wrap-messagebox-in-csharp.html)

s3rv3r
سه شنبه 21 آذر 1391, 12:03 عصر
داداش خودکشی چرا ؟ :لبخند:
خود مسیج باکس هم بر اساس طولانی ترین خط اندازه خودش رو تنظیم میکنه


string mymessage = "سلام بر دوستان \r\n";
mymessage += "برنامه نویسان سایت برنامه نویس";
MessageBox.Show(mymessage);

birtemp
جمعه 01 دی 1391, 16:09 عصر
پس همش الکی بود یعنی؟
:))))))))))))))))
ولی اینی که من گذاشتم خودش اتوماتیک به خط بعدی میره، با \n نمیره.

داداش خودکشی چرا ؟ :لبخند:
خود مسیج باکس هم بر اساس طولانی ترین خط اندازه خودش رو تنظیم میکنه


string mymessage = "سلام بر دوستان \r\n";
mymessage += "برنامه نویسان سایت برنامه نویس";
MessageBox.Show(mymessage);

mas256
یک شنبه 30 تیر 1398, 14:23 عصر
داداش خودکشی چرا ؟ :لبخند:
خود مسیج باکس هم بر اساس طولانی ترین خط اندازه خودش رو تنظیم میکنه


string mymessage = "سلام بر دوستان \r\n";
mymessage += "برنامه نویسان سایت برنامه نویس";
MessageBox.Show(mymessage);



لایک دادش
دمت گرم