PDA

View Full Version : سوال: ایراد در بازگشایی فایل و چند مورد دیگر



bghad1
چهارشنبه 07 مهر 1389, 01:33 صبح
سلام...امیدوارم حال همگی خوب باشه...
میشه کمکم کنین و این برنامه رو به صورت اصولی برام درست کنین و توضیح بدین بهم؟؟

چند تا از عیباش رو می گم...کد نویسیش هم خالی از ایراد نیست...

یکی از ایراداش اینه که دیگه فایل txt رو باز نمی کنه!!!!!!!:دی

یعنی از اون زمانی که یه فایل docx باهاش خواستم باز کنم قاطی کرد و دیگه ام درست نشد!!!!!!!!
نمی دونم چرا!!!!

مشکل بعدی اینه که توی منو ، توی گزینه جابجایی ، وقتی که میخواین یه حرفی رو با یه حرف انتخاب شده دیگه جابجا کنین ، به جای اینکه جابجا بشه اون حرف توی ریچ تکست باکسم ، حذف میشه از اونجا!!!!!!!
نمی دونم چرا!!!!!

مشکل بهدیم اینه که می خوام به جای اینکه بخوام همه متد ها و کدهامو توی فورم بنویسم ، به صورت کلاس کلاس بنویسمشون و بعداً بتونم توی فورمم و ریچ تکست باکسم ازش استفاده کنم...
نمی دونم چه جوری../...:متفکر:
البته مثل اینکه باید از ایونت و دلگیت استفاده کنم اما نمی دونم چجوری!!

الان فعلا همینا یادم میاد و چیز دیگه ای تو ذهنم نیست...

اگه بتونین کمکم کنین یه دنیا ممنونتون میشم:قلب::قلب:

برنامه رو پیوست کردم...
مرسی..

mmd2009
چهارشنبه 07 مهر 1389, 01:53 صبح
با سلام

من برنامتو دانلود و اجراش کردم اولین نکته ای که دیدم اینطوری شدم :متعجب:



Title = "ذخیره فایل",
Filter = "متن (*.txt ) | *.txt | همه فايلها (*.*) | *.* ",



یک پیشنهاد برادرانه اصلا فارسی ننویس. حالا بقیه کدهاتو میبینم هر چی در توان بود درست میکنیم و توضیح هم میدم

bghad1
چهارشنبه 07 مهر 1389, 02:03 صبح
سلام...ممنون دوست من..:لبخندساده::لبخندساده:

چرا فارسی ننویسم آخه؟!؟!:لبخند:

خوبه ها!!!!!:لبخند:

آخه کلا علاقه زیادی به فارسی نوشتن دارم:لبخند:
نیست یه مدت برنامه فارسی می کردم شاید جذابیتش برا همون باشه برام!!!!!:لبخند:

ممنون:):)

mmd2009
چهارشنبه 07 مهر 1389, 02:05 صبح
ابتدا مشکل اول : باز کردن فایل txt

دقت کنید که شما در کد زیر که نوشته بودید فضای خالی گذاشته بود و چون فضای خالی یک کاراکتر محصوب می شود و هیچ فرمتی نیست که فضای خالی داشته باشد که بعد از txt قرار بگیرد برای همین قاعدتا کد شما رو کامپایل می کند ولی نمی تواند اون چیزی را که شما ازش می خواهید رو بهتون اهدا بکن :

کد شما :



public void OpenFile()
{
OpenFileDialog openFile = new OpenFileDialog
{
Title = "بازگشایی فایل",
FileName = "انتخاب فایل",
Filter = "متن (*.txt)|*.txt ",
CheckFileExists = true
};

try
{
if (openFile.ShowDialog() == DialogResult.OK)
{
editor.LoadFile(openFile.FileName, RichTextBoxStreamType.PlainText);
}
}
catch(Exception ex)
{
//show the exception to the user
MessageBox.Show("خطا در بازگشايي فايل" + Environment.NewLine + "نام فايل يا سطح دسترسي به فايل را بررسي كنيد" +
Environment.NewLine + "Exception :" + ex.Message);
//MessageBox.Show ===>> يك پنجره كه حاوي نمايش پيام يا خطاي مورد نطر ماست ايجاد كرده و به نمايش مي گذارد
//Environment.NewLine ==>> باعث ايجاد خط جديدي در مسيج باكس ما مي شود
//ex.Message ==>> استثناي اي ايكس كه در بالا مشخص كرديم را به نمايش مي گذارد
}
}



اینم کدی که من نوشتم که البته کد شما نقصی هم داشت که مثلا اگر پسوندی غیر از txt وارد میشد ارور میداد و از برنامه خارج میشد :



public void OpenFile()
{
OpenFileDialog openFile = new OpenFileDialog
{
Title = "Open File",
FileName = "Select txt File",
Filter = "txt File (*.txt)|*.txt",
CheckFileExists = true
};

try
{
if (openFile.ShowDialog() == DialogResult.OK)
{
if (!(openFile.FileName.EndsWith("txt")))
{
MessageBox.Show("پسوند مورد نظر اشتباه می باشد","خطای پسوند", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
editor.LoadFile(openFile.FileName, RichTextBoxStreamType.PlainText);
}
}
}
catch(Exception ex)
{
//show the exception to the user
MessageBox.Show("خطا در بازگشايي فايل" + Environment.NewLine + "نام فايل يا سطح دسترسي به فايل را بررسي كنيد" +
Environment.NewLine + "Exception :" + ex.Message);
//MessageBox.Show ===>> يك پنجره كه حاوي نمايش پيام يا خطاي مورد نطر ماست ايجاد كرده و به نمايش مي گذارد
//Environment.NewLine ==>> باعث ايجاد خط جديدي در مسيج باكس ما مي شود
//ex.Message ==>> استثناي اي ايكس كه در بالا مشخص كرديم را به نمايش مي گذارد
}
}

mmd2009
چهارشنبه 07 مهر 1389, 02:26 صبح
در مورد کلاس هم باید بگم بهت دوست عزیز شما میتونی به این صورا استفاده بکنی :

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



public string OpenTxtFile()
{
OpenFileDialog openFile = new OpenFileDialog
{
Title = "Open File",
FileName = "Select txt File",
Filter = "txt File (*.txt)|*.txt",
CheckFileExists = true
};

if (openFile.ShowDialog() == DialogResult.OK)
{
if (!(openFile.FileName.EndsWith("txt")))
{
return ("No TxtFile");
}

}

return (openFile.FileName);
}


و تو ایتم بازگشایی فایل هم این کدهارو بنویسی :



try
{
notePad Np = new notePad();

editor.LoadFile(Np.OpenTxtFile(), RichTextBoxStreamType.PlainText);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}


موفق باشی

bghad1
چهارشنبه 07 مهر 1389, 02:37 صبح
توی منوی ویرایش ، تو قسمت " تعویض کلمه" ...چیکار کنم که درست بشه؟؟

هرکاری که کردم نشد نمی دونم چرا!!:ناراحت:

mmd2009
چهارشنبه 07 مهر 1389, 02:53 صبح
برای این مشکل هم شما ابتدا تو فرم مربوطه پراپریتی زیر رو بنویسید :



public string Exchange
{
get { return (replaceBox.Text.Trim()); }
set { replaceBox.Text = value; }
}


و برای فراخوانی هم از کد زیر استفاده بکنید :



Replace replace = new Replace();
replace.ShowDialog();
editor.SelectedText = replace.Exchange;



اگر باز مشکلی هست بگید...

bghad1
چهارشنبه 07 مهر 1389, 23:47 عصر
سلام....اینجا trim چیکار می کنه؟؟!؟اگه بخوام از متد Replace استفاده کنم چجوری باید اینکارو کنم اینجا؟؟از فورم 1 باید مقدار قبلی رو به متد Replace بدم که با مقدار قبلی عوضش کنه...چه جوری می تونم اینکارو انجام بدم؟؟؟ممنون;):)

mmd2009
پنج شنبه 08 مهر 1389, 00:37 صبح
این trim فضای خالی سمت راست و چپ رو در نظر نمیگیره.

متد ریپلیس برای چی ؟ بیشتر توضیح بده

bghad1
پنج شنبه 08 مهر 1389, 02:03 صبح
خوب برای اینکه حرفی که توی اون قسمت منو (تعویض کلمه) وارد میشه رو به جای اون حرفی که توی ریچ تکست باکس ( که اینجا اسمش ادیتور هستش) قرار بدم دیگه!!

trim که کار خاصی نکرد..
وقتی از ()Replace استفاده کنیم خوب میتونیم جای 2 تا استرینگ یا کاراکتر رو با هم عوض کنیم دیگه...نه؟؟
استفاده از متدش هم این مدلیه که ::


replaceBox.Text.Replace(string oldValue,string NewValue);

درسته دیگه؟؟

از این نمیشه استفاده کرد یعنی؟!؟!؟

چون trim که کاری از پیش نبرد..:چشمک:

ممنون../...:لبخندساده:

bghad1
جمعه 09 مهر 1389, 11:04 صبح
چیزی به نظرتون نرسید؟!