مشکل قطعه کد زیر چی هست :دی
[HTML]
cd1.ShowDialog;
cd1.Filter = "text|*.txt";
r1.LoadFile(cd1.FileName);
[/HTML]
Printable View
مشکل قطعه کد زیر چی هست :دی
[HTML]
cd1.ShowDialog;
cd1.Filter = "text|*.txt";
r1.LoadFile(cd1.FileName);
[/HTML]
سلام.
Filter باید قبل از فراخوانی ShowDialog مقداردهی بشه.
ShowDialog تابعه، باید () انتهاش باشه.
در ضمن بعد از فراخوانی ShowDialog درست تره که DialogResult رو چک کنید.
خط آخر ظاهرا اشکال نداره.کد:cd1.Filter = "text|*.txt";
if (cd1.ShowDialog() == DialogResult.OK)
{...}
r1.LoadFile(cd1.FileName);
:40::40::40::40::40:
خوب زمانی که کاربر فایلی رو انتخاب نمیکنه و cancel میزنه ارور میده برنامه برای رفع این ارور باید از کد
[HTML]
if cd1.FileName="";
this.Show;
[/HTML]
استفاده کرد یا
چه کدی :دی ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟؟
خوب کدی که تو پست قبلی هست جوابگوئه. به این شکل بهتره؛نقل قول:
کدی رو که بعد از باز شدن فایل باید اجرا بشه، تو بخش اصلی if قرار بدید. اینطوری ارور پیش نمیاد. بخش else هم مربوط به وقتی هست که دکمه ی cancel تو دیالوگ باکس فشرده میشه و معمولا کدی تو این قسمت قرار نمیگیره. استفاده از خاصیت FileName برای بررسی فشرده شدن دکمه ی Cancel مناسب نیست.کد:if (cd1.ShowDialog() == DialogResult.OK)
{
// Open pressed
...
}
else
{
// Cancel pressed
...
}
:40::40::40::40::40:
دوست عزیز متوجه نشدم :دی
[HTML]cd1.ShowDialog)(;
cd1.Filter = "text|*.txt";
r1.LoadFile(cd1.FileName);[/HTML]
خوب این برای باز شدن هست و خوب میشه یک بیشتر توضیح بدید درباره کدتون ؟ یا کدی ساده تر برای cancel
>> من تازه دارم c# یاد میگیرم :دی <<
اعصابم رو خورد کرده شما بی زحمت یه برنامه بنویس که یه فایل تکست رو باز کنه و اگر cansel زد ارور نده
:19:
ساده تر از این نمیشه. شما یه کنترل OpenFileDialog با نام dlgOpen تو فرم داشته باش، و یک دکمه. کد زیر رو تو رویداد کلیک دکمه وارد کن. در انتها هم متن خونده شده از فایل تکست تو strContent ذخیره میشه. اگه کاربر دکمه ی Cancel رو بزنه، هیچ اتفاقی نمی افته، خطایی هم رخ نمیده. تنها خطای ممکن تو کد زیر، یکی از خطاهای متد ReadAllText هست که شما فعلا ازش صرف نظر کن...
کد:dlgOpen.Filter = "Text Files (*.txt)|*.txt";
dlgOpen.FileName = "";
if (dlgOpen.ShowDialog() == DialogResult.OK)
{
string strContent = System.IO.File.ReadAllText(dlgOpen.FileName);
}
:40::40::40::40::40:
از کد قبلی تون استفاده کردم منتها فایل رو لود نمی کرد از این کدم خواستم استفاده کنم که مشکل لود شدن فایل تکست در ریچ تکست داره :دینقل قول:
منظورتون رو متوجه نمیشم. پست 7# محتویات فایل تکست رو درون strContent قرار میده. و شما می تونید این محتوای strContent رو به هر چیزی منتسب کنید. مثلا متن Rich Textbox و یا هر چیز دیگه... مشکل دقیقا کجاست؟نقل قول:
:40::40::40::40::40:
خوب این انتساب رو چطوری :دی دادا من مثل شما حرفه ای نیستم تازه دارم یاد میگیرم :دی
مشکل اینجاست که یه فایل متنی رو باز کنه تو ریچ تکست :دی همین + مشکلاتی که حل شد ( شما گفتید )
این 2 تا راه حل؛نقل قول:
اولی کامل شده ی کد پست 7#:
راه دوم، با استفاده از متد LoadFile از ریچ تکس باکس که خودتون ازش استفاده کردید. منتها متوجه شدم که این متد LoadFile انگار فایل های تکست غیر ASCII رو نمیخونه (مثلا UTF-8 یا Unicode) و خطا میده. شاید شما با این خطا مواجه شدید. تو کد زیر هر گونه خطای بازدارنده مهار شده و شما فقط یک پیغام دریافت می کنید:کد:dlgOpen.Filter = "Text Files (*.txt)|*.txt";
dlgOpen.FileName = "";
if (dlgOpen.ShowDialog() == DialogResult.OK)
{
string strContent = System.IO.File.ReadAllText(dlgOpen.FileName);
rtxtMain.Text = strContent;
}
هر کدوم از 2 تا کد بالا جواب میده، اما دومی کامل تره و البته دخالت شما کمتر... :31:کد:dlgOpen.Filter = "Text Files (*.txt)|*.txt";
dlgOpen.FileName = "";
try
{
if (dlgOpen.ShowDialog() == DialogResult.OK)
{
rtxtMain.LoadFile(dlgOpen.FileName);
}
}
catch (Exception expError)
{
MessageBox.Show(expError.Message, "File Open Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
:40::40::40::40::40:
ممنون مشکلم بر طرف شد : دی :دی
[HTML]
cd2.Filter = "Text Files (*.txt)|*.txt";
cd2.FileName = "";
if (cd2.ShowDialog() == DialogResult.OK)
{
r1.SaveFile(cd2.FileName);
}
[/HTML]
برای ذخیره کردن از این کد استفاده میکنم ولی وقتی بازش میکنم نوشته ها اینطوری میاد
[HTML]
{\rtf1\fbidis\ansi\ansicpg1256\deff0\deflang1065{\ fonttbl{\f0\fnil\fcharset0 Microsoft Sans Serif;}}
\viewkind4\uc1\pard\ltrpar\lang1033\f0\fs17 gfth\lang1065\par
}
[/HTML]
متد SaveFile بدون پارامتر فایل رو در قالب RTF ذخیره میکنه. اون کدی که تو پست شما هست، کد قالب فایل RTF هست. به هر حال... این اتفاق وقتی می افته که شما با یک فایل RTF مثل یک فایل متنی معمولی (بدون قالب) رفتار کنید.نقل قول:
یه تغییراتی باید ایجاد کنید. تو دیالوگ SaveFile باید اکستنشن و نوع فایل رو به RTF تغییر بدید. فایل های با اکستنشن txt به طور پیش فرض با Notepad بازمیشن. اگه یک فایل RTF با اکستنشن txt ذخیره بشه، هنگام باز شدنش همون اتفاقی می افته که شما دیدید.
یه سوال؛ چه اصراری به کار با ریچ تکست باکس هست؟ شما با یک تکست باکس معمولی هم میتونید با فایل های Plain Text کار کنید.
:40::40::40::40::40:
[HTML]یه سوال؛ چه اصراری به کار با ریچ تکست باکس هست؟ شما با یک تکست باکس معمولی هم میتونید با فایل های Plain Text کار کنید[/HTML]
هیچ اصراری :دی
آخه تا حالا با plain text کار نکردم وطبق عادت
تو وی بی 6 که از ریچ استفاده میکنم( شباهت دستورات ) استفاده میکنم .
الان من مشکل در save دارم چطوری از فایل های plain text استفاده کنم
نحوه باز کردن چه در ریچ چه در تکست رو یاد گرفتم حالا نوبت ذخیره است :دی
[HTML]ممنون میشم [/HTML]
باید نوع فایل ها رو کاملا مشخص کنید. دو کد کاملا مشابه برای هر دو عمل میشه نوشت. این برای Open؛
و این برای Save؛کد:dlgOpen.Filter = "ASCII Text Files (*.txt)|*.txt|Unicode Text Files (*.txt)|*.txt|Rich Text Format (*.rtf)|*.rtf";
dlgOpen.FileName = "";
try
{
if (dlgOpen.ShowDialog() == DialogResult.OK)
{
if (dlgOpen.FilterIndex == 1)
{
// ASCII Plain Text
rtxtMain.LoadFile(dlgOpen.FileName, RichTextBoxStreamType.PlainText);
}
else if (dlgOpen.FilterIndex == 2)
{
// Unicode Plain Text
rtxtMain.LoadFile(dlgOpen.FileName, RichTextBoxStreamType.UnicodePlainText);
}
else if (dlgOpen.FilterIndex == 3)
{
// RTF
rtxtMain.LoadFile(dlgOpen.FileName, RichTextBoxStreamType.RichText);
}
}
}
catch (Exception expError)
{
MessageBox.Show(expError.Message, "File Open Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
کد:dlgSave.Filter = "ASCII Text Files (*.txt)|*.txt|Unicode Text Files (*.txt)|*.txt|Rich Text Format (*.rtf)|*.rtf";
dlgSave.FileName = "";
try
{
if (dlgSave.ShowDialog() == DialogResult.OK)
{
if (dlgSave.FilterIndex == 1)
{
// ASCII Plain Text
rtxtMain.SaveFile(dlgSave.FileName, RichTextBoxStreamType.PlainText);
}
else if (dlgSave.FilterIndex == 2)
{
// Unicode Plain Text
rtxtMain.SaveFile(dlgSave.FileName, RichTextBoxStreamType.UnicodePlainText);
}
else if (dlgSave.FilterIndex == 3)
{
// RTF
rtxtMain.SaveFile(dlgSave.FileName, RichTextBoxStreamType.RichText);
}
}
}
catch (Exception expError)
{
MessageBox.Show(expError.Message, "File Save Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
:40::40::40::40::40:
دوستان مشکل این تیکه کد چی هست
معادله درجه دو هست
[HTML]
int A, B, C;
int D;
int X1,X2;
D = Math.Pow(B, 2) - 4 * A * C;
IF(D>0);
X1 == (-B + Math.Sqrt(D)) / (2 * A);
X2 == (-B - Math.Sqrt(D)) / (2 * A);
MessageBox.Show(X1, X2);
else if(d==0)
X2==X1;
X1==-b\2*a;
MessageBox.Show(X1,X2);
else
MessageBox.Show(" not root");
[/HTML]
سلام. اینطوری درسته؛
اشکال های کد شما؛کد:double A, B, C;
double D;
double X1, X2;
A = 2D;
B = 9D;
C = 2D;
D = B * B - 4D * A * C;
if (D > 0D)
{
X1 = (-B + Math.Sqrt(D)) / (2D * A);
X2 = (-B - Math.Sqrt(D)) / (2D * A);
MessageBox.Show(string.Format("X1 = {0:F3} and X2 = {1:F3}", X1, X2));
}
else if (D == 0D)
{
X1 = -B / (2D * A);
MessageBox.Show(string.Format("X1 = X2 = {0:F3}", X1));
}
else
{
MessageBox.Show("No real root.");
}
نوع A و B و C و ... نباید int باشه. معادله ی درجه 2 باید روی اعداد حقیقی کار کنه. یا double یا float. حتی اگه اجباری برای استفاده از عدد حقیقی نباشه، شما برای کار با اکثر توابع Math روی اعداد int به casting (تبدیل نوع) نیاز دارید.
برای عمل ساده ای مثل B^2 از Pow استفاده نکنید. هر چند محاسبات #C از دقت بالایی برخورداره، اما بنا به دلایلی که تو بحث آنالیز مطرح میشه، تا جایی که ممکنه باید محاسبات اعشاری رو تا حد ممکن ساده انجام بدید.
سمی کالن بعد if عملا if رو از کار میندازه.
if هایی که شما نوشتین، بلوک ندارن. فقط برای یک واحد دستوری میشه بلوک به کار نبرد. که البته پیشنهاد من اینه که برای هر بخش از دستوراتی که روی بلوک کار میکنن، بلوک به کار ببرید.
تو C عملگر انتساب با تساوی فرق می کنه. تساوی (==) عملگر شرطیه و انتساب (=) عملگر محاسباتی.
پارامتر message تو MessageBox حتما باید رشته ای باشه. شما عدد ارسال کردید که قابل قبول نیست.
تو بلوک دلتای صفر یک محاسبه ی اضافی انجام دادید. البته چند میکرو یا نانو ثانیه اصلا مهم نیست، اما اصول نانوشته ی برنامه نویسی :31: بهمون میگه که هیچ کار نالازمی رو انجام ندیم.
متغیرهای پایه رو مقدار دهی نکردید. این کار هم خطای کامپایلری پیش میاره و هم خطای منطقی. A و B و C رو میگم.
و اینکه C به حالت حروف حساسه. IF برای C نامفهومه.
:40::40::40::40::40:
ممنون از توضیحاتتون
کامل و جامعتون خیلی کمک کرد :دی
[HTML]A = 2D;
B = 9D;
C = 2D;[/HTML]
اینجا خودتون مقدار دهی کردید
خوب برای این که کاربر عدد بده این درسته ؟
[HTML]A=T1.TEXT
B=T2.TEXT
C=T2.TEXT
[/HTML]
چون اینا خودتون A , B , C رو از نوع DOUBLE گرفتید ؟
[HTML]double A, B, C;
[/HTML]
بعد این 0D یکم نا مفهوم هست ؟ در باره این قسمت ها یکم توضیح بدید
مقدارها رو اینطوری باید دریافت کنید؛
فرقی نمی کنه double یا float، به هر حال باید حقیقی باشه. شما دارید روی معادله ی درجه 2 کار می کنید دیگه... طبیعتا همه ی مقادیر باید حقیقی باشن...کد:A = Convert.ToDouble(T1.Text);
B = Convert.ToDouble(T2.Text);
C = Convert.ToDouble(T3.Text);
0D یعنی 0 دوبل یا 0 با دقت مضاعف. یک پسوند عددی بامعناست برای #C. پسوندهای عددی رایج تو C شارپ:
d یا D: حقیقی با دقت مضاعف مثل 2D
f یا F: حقیقی با دقت معمولی مثل 3.2F
l یا L: صحیح طویل مثل 45L
ذکر هیچ کدوم از این پسوند ها اجباری نیست، اما در صورت استفاده به کامپایلر دستور صریح نحوه ی برخورد با اعداد رو میده و البته برنامه رو خواناتر می کنه. در ضمن تو محاسبات متشکل از هم اعداد صحیح و هم اعداد حقیقی، گاهی اوقات چاره سازه.
:40::40::40::40::40:
[HTML]MessageBox.Show(string.Format("X1 = X2 = {0:F3}", X1));[/HTML]
نقش [HTML]string.Format[/HTML] چی هست
خوب جواب درستی نمیدهد
دوست عزیز من [HTML]A=4 B=5 C=1 [/HTML] قرار میدهم وباید جواب -3 و +3 باشد در صورتی که
مقدار ریشه ها را درست نشان نمی دهد
سلام.
String.Format فرمت کننده ی رشته ای تو #C هست شبیه چیزی که تو ++C می بینیم.
برای a=4، b=5 و c=1 جوابها اینه؛
d=9
x1=-1
x2=-1/4
نه 3 و 3-! اشتباه محاسبه می کنید. کد هم جواب ها رو درست میده.
:40::40::40::40::40:
[HTML]
progressBar1
[/HTML] برای حرکت دادنش
از یک تایمر استفاده میکنیم ؟ و میشه نحوه حرکت دادنش رو بگید ؟؟؟؟؟؟؟؟؟
D استفاده شد عدم استفاده تغییری در برنامه نمید هدنقل قول:
در ضمن در برنامه قبلی که از
سلام
پیشنهاد میکنم سوالات #C را در انجمن [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] مطرح فرمائید
حرکت ProgressBar با تایمر برای من عجیب است!نقل قول:
برای حرکت دادنش
از یک تایمر استفاده میکنیم ؟ و میشه نحوه حرکت دادنش رو بگید ؟؟؟؟؟؟؟؟؟
معمولاً این کنترلر در یک حلقه خاص و از نتیجه درصد فعالیت ان حلقه ان به روز میشود.
نمونه بحث مرتبط:
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
موفق باشید.