CTRL+Zのものを再作成する機能をアプリで作成しています。私はいくつかのテキストボックスを手に入れました、そして私はこのようなテーブルを作りました:
hashtable textChanges[obj.Name, obj.Text] = new HashTable(50);
選択したキーから値を抽出するのに問題があります。keyDownが起動された後にキーを取得しています。
フォーカスのあるコントロールを探している場合は、彼の名前を使用して、テーブルに入力した最後の値を抽出します。
これはイベントコードです:
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyData == Keys.Z)
{
for (int i = 0; i < this.Controls.Count; i++)
{
if (this.Controls[i].Focused)
{
if (this.Controls[i].GetType() == typeof(TextBox))
{
TextBox obj = (TextBox)this.Controls[i];
obj.Text = textChanges[obj.Name]; // <--- compile error
//Cannot implicitly convert type 'object' to 'string'. An explicit conversion exists (are you missing a cast?)
}
}
}
}
}
これは私がHashTableにキーと値を追加する方法です
private void textBox_OnTextChange(object sender, EventArgs e)
{
if (sender.GetType() == typeof(TextBox))
{
TextBox workingTextBox = (TextBox)sender;
textChanges.Add(workingTextBox.Name, workingTextBox.Text);
}
if (sender.GetType() == typeof(RichTextBox))
{
RichTextBox workingRichTextBox = (RichTextBox)sender;
textChanges.Add(workingRichTextBox.Name, workingRichTextBox.Text);
}
}
キャストエラーを見逃すのはなぜですか?
(私の英語でごめんなさい)