我想創建鍵盤在Windows中的Swype表單中使用C#虛擬鍵盤(Swype輸入比如鍵盤)Windows窗體應用程序C#
我有兩個問題:一個 。我無法重現手指輕掃動作。 b。我無法識別不同密鑰下的字母。
對於第一個問題:
我所使用的圖形類和筆類,並使用它像這樣:
bool draw;
Graphics g;
Pen p;
int prevX;
int prevY;
private void Form1_Load(object sender, EventArgs e)
{
draw = false;
g = CreateGraphics();
p = new Pen(Color.Black, 2);
}
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
draw = true;
prevX = e.X;
prevY = e.Y;
}
private void Form1_MouseUp(object sender, MouseEventArgs e)
{
draw = false;
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (draw)
{
g.DrawLine(p, prevX, prevY, e.X, e.Y);
prevX = e.X;
prevY = e.Y;
}
}
但這裏的問題是,它開始從左上角畫的屏幕而不是按鈕的位置。它也沒有畫出按鈕。路徑中的任何控件都與該行重疊。
對於第二期:
a。我使用鼠標放下事件來設置一個布爾值「允許」爲true,然後當鼠標移動時,我嘗試獲取按鈕的文本。就像上面的圖片一樣。我試着從字母「S」開始,當我移過其他字母時,只有字母「S」保持記錄。其他方法的鼠標輸入或鼠標懸停事件甚至不會發生。
b。我也試過使用dragdrop事件,但它不起作用。我不確定,但我假設按鈕不是可拖動的對象拖動事件不起作用。
我不明白或困惑如何實現我的目標。
我認爲,當你開始繪製從左上角到鼠標位置得到一條線嗎?這可能是因爲你的prevx/prevy變量是默認的(0),在這種情況下,你想延遲繪圖,直到第二次鼠標移動事件,這應該給你正確的結果。我不能評論其餘的問題,儘管 – Charleh
這是非常重要的。您不能使用按鈕控件,它們會剪裁您繪製的任何東西並擁有自己的鼠標處理功能。使用Paint事件必須讓它們*看起來像按鈕。 –
@HansPassant有沒有辦法在運動時檢測字母? – Akhil