سلام. من یه برنامه اجرایی رو با سی شارپ باز میکنم و میخوام روی این برنامه ی باز شده توسط سی شارپ Ctrl+F رو اجرا کنم تا یه صفحه تو اون برنامه باز بشه . میشه لطفا کمک کنید بهم. مثلا تو محیط سی شارپ office رو باز کنم و برای باز شدن صفحه ی find دستور Ctrl+F رو اجرا کنم. ممنون.
کد سی شارپ زیر را داخل کلاس فرم مورد نظر خودتان کپی کنید. می توانید برای هر کلید دیگری هم از همین دستور با تغییر دادن کلید استفاده کنید :
protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { if (keyData == (Keys.Control | Keys.Q)) { // Your Code Here ... MessageBox.Show("Ctrl+Q"); return true; } return base.ProcessCmdKey(ref msg, keyData); }
خیلی ممنون. جناب مهندس
من یه سوال در مورد کدم داشتم وقتی از کد فوق استفاده میکنم دستور برای برنامه ی سی شارپ اجرا میشه و message رو نشون میده ولی روی Word صفحه ی FIND باز نمیشه.من میخوام در هنگام اجرای این دستور تو سی شارپ صفحه ی فعالم صفحه ی Word باشه نه برنامه ی خودم . طبق یه حلقه ای دستورات سی شارپ به اعمال Ctrl+Q برسه بعد صفحه ی ورد صفحه ی فعال بشه و به طور اتوماتیک صفحه ی Find باز بشه.
ممنون.
برای Search یا SearchAndReplace توسط کد سی شارپ می بایست از کتابخانه Microsoft.Office.Interop.Word استفاده کنید که میتوانید آن را با nuGet دانلود کنید و به پروژه خود اضافه کنید .
متدهای زیر هم برای پیدا کردن یا جایگزین کردن متن شما می باشند:
private void Find(Microsoft.Office.Interop.Word.Application doc, object findText) { //options object matchCase = false; object matchWholeWord = true; object matchWildCards = false; object matchSoundsLike = false; object matchAllWordForms = false; object forward = true; object format = false; object matchKashida = false; object matchDiacritics = false; object matchAlefHamza = false; object matchControl = false; object read_only = false; object visible = true; object replace = 2; object wrap = 1; //execute find and replace doc.Selection.Find.Execute(ref findText, ref matchCase, ref matchWholeWord, ref matchWildCards, ref matchSoundsLike, ref matchAllWordForms, ref forward, ref wrap, ref format, null,null, ref matchKashida, ref matchDiacritics, ref matchAlefHamza, ref matchControl); } private void FindAndReplace(Microsoft.Office.Interop.Word.Application doc, object findText, object replaceWithText) { //options object matchCase = false; object matchWholeWord = true; object matchWildCards = false; object matchSoundsLike = false; object matchAllWordForms = false; object forward = true; object format = false; object matchKashida = false; object matchDiacritics = false; object matchAlefHamza = false; object matchControl = false; object read_only = false; object visible = true; object replace = 2; object wrap = 1; //execute find and replace doc.Selection.Find.Execute(ref findText, ref matchCase, ref matchWholeWord, ref matchWildCards, ref matchSoundsLike, ref matchAllWordForms, ref forward, ref wrap, ref format, ref replaceWithText, ref replace, ref matchKashida, ref matchDiacritics, ref matchAlefHamza, ref matchControl); } protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { if (keyData == (Keys.Control | Keys.Q)) { object fileName = Path.Combine("G:\\word.docx"); Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application { Visible = true }; Microsoft.Office.Interop.Word.Document aDoc = wordApp.Documents.Open(fileName, ReadOnly: false, Visible: true); aDoc.Activate(); //FindAndReplace(wordApp, "لورم", "سجاد"); Find(wordApp, "لورم"); return true; } return base.ProcessCmdKey(ref msg, keyData); }
خیلی ممنون آقای مهندس. واقعا به من لطف کردین که وقت گذاشتین و راهنمایی کردین. قطعا کدی که شما گذاشتین رو تو پروژه ام استفاده میکنم و برای من واقعا کاربردیه. نمیدونم چه طوری به خاطر زحمتی که کشیدین تشکر کنم.
آقای مهندس من سوال دیگه ای هم دارم در مورد پایان نامه ام که اگه بشه و وقت دارید راهنمایی کنید.
رشته ی من مهندسی عمران هست و من میخوام برای پایان نامه ام چند نرم افزار مختلف رو به هم لینک کنم. متاسفانه برای ورودی اطلاعات تکست احتیاج دارم که برخی صفحات مزاحم که بیخودی تو مسیر اجرای کدم باز میشه رو ببندم . نرم افزار تحلیلی که من استفاده میکنم بعد از ران شدن یه صفحه ی توضیحات اولیه باز میکنه که تا بسته نشه به من اجازه ی تحلیل های دینامیکی مداوم رو نمیده و من مجبورم اول با کد نویسی مدلم رو بسازم و تک به تک ران کنم و بقیه ی کدنویسی هام مربوط به برداشت نتایج و در واقع بخش اصلی کد نویسیم به درد م نمیخوره !!! حدودا 500 تا مدل با کدنویسی ساختم. در صورتی که اگه اون صفحه ی مزاحم نباشه راحت با حلقه ی for مشکلم حله . شما پیشنهادی برای کمک به من دارید؟ کد نویسی پیشرفته یا خاصی میخواد ؟
در ضمن نرم افزار تحلیلی مورد استفاده ی من یک سری کلید های shortcut هم داره که با کمک اونها بدون باز شدن صفحه ی مزاحم میانی و باز شدن صفحه ی opendialog میتونم فایل تکست رو وارد نرم افزار کنم که این مورد رو هم بلد نیستم کد بنویسم.
اگه لطف کنید نظرتون رو بگید خیلی ممنون میشم. یا اگه بتونید برام بنویسید این بخش کد رو برای استفاده از shortcut و انتخاب دکمه ی ok صفحه ی opendialog به صورت خودکار از نظر هزینه و وقت به من اطلاع بدید که تصمیم بگیرم.
ممنون.
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)