2012-10-24 21 views
6

Kodumun, kullanıcının klavyeden girdiği harflere erişmesi gereken bir MS Word eklentisi geliştiriyorum. MS Word'de bir olay nasıl oluşturulur Keypress

private void ThisDocument_Startup(object sender, System.EventArgs e) 
{ 
    this.SelectionChange += new SelectionEventHandler(ThisDocument_SelectionChange); 
} 

void ThisDocument_SelectionChange(object sender, SelectionEventArgs e) 
{ 
    MessageBox.Show(e.Selection.Text); 
} 

Ben SelectionChange olayı bana metni verebilir düşünüyorum ama olay basışı ileri sürülmemiş olduğu, dokunuş ile olayı tetiklemek için herhangi bir yolu var mı? Ayrıca, bunu yapmanın daha kolay bir yolu veya işlevselliği veren bir açık kaynak projesi varsa, memnuniyetle karşılanacaktır.

+1

Seçim değişikliği, "metni vurgulama" durumundayken durum değişikliği içindir. (http://msdn.microsoft.com/en-us/library/microsoft.office.tools.word.document.selectionchange(v=vs.80).aspx), "KeyUp", "KeyDown" gibi bir şey arayın veya "KeyPress", hızlı bir arama yapmaktan başka bir şey vermedi. –

+1

Bkz. Http://stackoverflow.com/questions/13000645/capturing-keydown-event-of-ms-word-using-c-sharp –

+0

@PhilPrice, Yanıt, doğrudan "KeyUp" veya "KeyDown" bulunmadığını gösterir. Görsel stüdyodan erişilebilen etkinlik. "SelectionChange" etkinliğini bir çalışma çevresinde kullanıyorum. Eğer tetikleyebilirsem, imlecin karakterini yakalayabilirim. BTW zaten ok tuşları ile tetiklenebilir. Neyse, giriş için teşekkürler – Yohannes

cevap

5

Microsoft, anahtar teslim olayını yerel olarak göstermiyor, ancak bir çözüm var.

Ben aşağıda bağlantısı makaleden yardımıyla kontrol klavyeyi uygulanan: Bu uygulama ve abone olabileceğiniz bir temsilci oldukça sağlıyor olmalı çağırarak, size IsKeyDown adında bir statik yöntem verir

http://www.switchonthecode.com/tutorials/winforms-accessing-mouse-and-keyboard-state

.

+0

+1 Bu cevap için teşekkür ederiz. Bu yaklaşımı kullanmayı düşünüyorum. Uyguladığınız kod güvenilir mi? Demek istediğim, Office/Word yoluna giriyor ve aralıklı olarak çalışmasını engelliyor mu? Teşekkür ederim. – Sabuncu

+0

Emin değilim, bunu bir kelime için kullanmamıştım :) – Soeholm

+0

@Soeholm Sağladığınız bağlantı artık öldü. – Jared