حاشیه دار کردن کنترل TextBox با یک رنگ دلخواه
در کلاس TextBox خود (و یا سایر کنترلهای دلخواه : کامبوباکس، لیست باکس و ...) بنویسید :
private static int WM_NCPAINT = 0x0085;
private static int WM_ERASEBKGND = 0x0014;
private static int WM_PAINT = 0x000F;
[DllImport("user32.dll")]
static extern IntPtr GetDCEx(IntPtr hwnd, IntPtr hrgnclip, uint fdwOptions);
[DllImport("user32.dll")]
static extern int ReleaseDC(IntPtr hwnd, IntPtr hDC);
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
if (m.Msg == WM_NCPAINT || m.Msg == WM_ERASEBKGND || m.Msg == WM_PAINT)
{
IntPtr hdc = GetDCEx(m.HWnd, (IntPtr)1, 1 | 0x0020);
if (hdc != IntPtr.Zero)
{
Graphics graphics = Graphics.FromHdc(hdc);
Color borderColor = Color.Blue;
Rectangle rectangle = new Rectangle(0, 0, this.Width, this.Height);
ControlPaint.DrawBorder(graphics, rectangle, borderColor, ButtonBorderStyle.Solid);
m.Result = (IntPtr)1;
ReleaseDC(m.HWnd, hdc);
}
}
}
توجه داشته باشید که انجام اینکار صرفا بوسیله override کردن رویداد paint و رسم یک مستطیل امکانپذیر نیست.
محو شدن تدریجی یک فرم با تغییر دادن خاصیت Opacity
private void button1_Click(object sender, EventArgs e)
{
this.Opacity = 1;
for (int i = 0; i < 100; i++)
{
this.Opacity -= 0.01;
Application.DoEvents();
}
}
this به آبجکت فعلی از فرم اشاره دارد.
هر روز چند تا براتون ميذارم اميدوارم به كار بيان و مفيد باشن
سلام
البته منو ببخشید ، فایل کامل word هزار و یک نکته در C# که در سایت برنامه نویس وجود داره قبلا جمع آوری شده براتون پیوست کردم که واقعا مفیده.
از بنامه نويس چيزي نمي دونم پس اگ شما همش رو دارين اونهايي كه شما ندارين رو من ميذارم
كه بشه 2001
یه برنامه که با استفاده از اون میشه هر فایل exe رو تحت برنامه اجرا کرد و درون یک کنترل( مثلا پنل ) قرار داد.
فکر می کنم در بعضی از مواقع، واقعا کارا باشه.
افزودن قطعه كد به ToolBox
قطعه كدي كه زياد مورد استفاده قرار مي گيرد در جعبه ابزار قرار مي دهيم
سپس با كليك كردن روي آن، قطعه كد مورد نظر را در برنامه قرار دهيد.
براي اضافه كردن كد به جعبه ابزار مي تونيد اون رو انتخاب كنيد سپس با ماوس روي جعبه ابزار
drag كنيدو روي دستور كليك راست و Rename كرده و نام بامفهومي به اون بديد و براي استفاده از اين كد در برنامه كافي است كه مكان نما را به جايي كه مي خواهيد كد در آن قرار گيرد ببريد و سپس روي دستور دابل كليك كنيد..
محاسبه تعداد صفحات یک فایل PDF توسط عبارات منظم
:
كد:
using System.IO;
using System.Text.RegularExpressions;
int PDF_page_counter(string path)
{
FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);
StreamReader sr = new StreamReader(fs);
string pdf_text = sr.ReadToEnd();
//======================================
Regex rgx = new Regex(@"/Type\s*/Page[^s]");
MatchCollection matches = rgx.Matches(pdf_text);
return matches.Count;
}
نحوه استفاده :
کد:
MessageBox.Show(PDF_page_counter(@"E:\1.pdf").ToString());
سلام
دستتون درد نکنه فقط تا جایی که ممکنه برای نوشتن کد ها از تگ کد استفاده کن
کد:
کد
در نوار ابزار با # مشخص شده
از عملگر Xor میتوان برای به رمز درآوردن متن استفاده کرد. ویژگی کار این عملگر این است که اگر یک عدد را دوبار متوالی با عددی دیگر Xor کنید، دوباره به همان عدد اولیه خواهید رسید. برای مثال کد اسکی حرف A را که 65 است با عدد 50 Xor میکنیم. حاصل این عمل عدد 115 است. حال اگر این عدد 115 را دوباره با 50 Xor کنیم به عدد 65 میرسیم. در مثال زیر نمونه کدی را که متن یک TextBox با Xor به حالت رمز درمیآورد و از آن خارج میکند بررسی میکنیم.
کد:
if ((TextBox.Text != "")) {
if ((SaveFileDialog.ShowDialog == Windows.Forms.DialogResult.OK)) {
FileOpen(1, SaveFileDialog.FileName, OpenMode.Output);
// Encryption codes.
for (int index = 0; (index
<= (TextBox.TextLength - 1)); index++) {
eachLetter = TextBox.Text.Substring(index, 1);
Print(1, Asc(eachLetter), Xor, 369);
}
}
}
در حلقه For Next به اندازه طول متن در TextBox یکی یکی حروف آن خوانده میشوند و بعد از استخراج کد اسکی هر یک در عدد 369 Xor میشوند و عدد حاصل در فایل نوشته میشود. کد از رمز خارج کردن فایل در زیر آمده.
کد:
if ((OpenFileDialog.ShowDialog == Windows.Forms.DialogResult.OK)) {
FileOpen(1, OpenFileDialog.FileName, OpenMode.Input);
// Read encrypted numbers from file, convert with Xor and build the string.
for (
; EOF(1);
) {
Input(1, encryptedNumber);
decryptedChr = Chr(encryptedNumber, Xor, 369);
decryptedChr;
}
}
در حلقه Do Until تا زمانی که فایل به انتها نرسیده با دستور Input یکی یکی از آن میخواند و در متغیری از نوع Short به نام encryptedNumber دخیره میکند. سپس در خط بعد عدد ذخیره شده دوباره با 369 Xor میشود و همزمان به نوع Char تبدیل میشود.
مشاهده و ذخیره تمام پیام های ارسالی در شبکه
سلام
چند روز قبل نیاز به برنامه ای داشتم که پردازش نسبتا ساده ای رو توی زمان کمی انجام بده!
اول برنامه رو توی C# نوشتم ولی دیدم زمان هر Loop اون زیاده (حدود 250 Tick).به این نتیجه رسیدم که قسمت اصلی پردازش رو توی VC بنویسم و در C# پردازش رو به یک Function که در DLL ای که در VC ساخته بودم محول کنم.ساخت DLL راحت انجام شد (هر Loop پردازش صفر Tick طول می کشید!) ولی در هنگام استفاده مشکلی پیش اومد.در نهایت متوجه دو نکته شدم (هرچند جایی به این صراحت ندیدم ولی کم و بیش به آنها اشاره شده است) که برای دوستانی که احتمالا مانند من می خواهند DLL ساخته خودشان را در C# استفاده (DllImport) کنند،می نویسم:
1) حتما Function درون VC باید از نوع C باشد (از نوع CPP نباشد).
2) حتما نسخه Release خروجی VC (منظور DLL است) را در اختیار برنامه C# بگذارید.
در غیر اینصورت با پیغامی شبیه:
کد:
کد:
Unable to find an entry point named ...
روبرو خواهید شد.
در ضمیمه یک نمونه ساخت DLL در VC و یک نمونه استفاده از آن در C# آمده است.
موفق باشید
نقل قول: ) حتما Function درون VC باید از نوع C باشد (از نوع CPP نباشد).
2) حتما نسخه Release خروجی VC (منظور DLL است) را در اختیار برنامه C# بگذارید.
این حرف شما پایه درستی نداره .
در مورد اول که اونو به طور کامل رد میکنم فقط میگم بعضی از Type ها هستند که در .net معادل اونها وجود نداره مثلا برای String باید ار نوع BStr استفاده بشه . برای map کردن Type ها c++ در .net هم در هزار تا مقاله بهش اشاره شده .
2- در مورد خطای دوم هم به این دلیل بوده است که بایستی توابع نوشته شده خروجی در فایلی مجزا بنام Def معرفی شوند .
3- در مورد سرعت بر میگرده به تعاریف manage,native هر چند بحثی طولانی است . اما در خیلی از موارد سرعت کدهای manage بیشتر است .
اگر خواستی بگو دلیلش بهت بگم.