已清除的剪贴板不为空
Cleared Clipboard is not null
我想检查剪贴板是否包含数据,如果没有,请启用 "Paste" 按钮。但不幸的是,即使我清除了剪贴板,它仍然没有显示它是空的。我正在使用 Windows 表格。
我手动清除剪贴板:
private void button2_Click(object sender, EventArgs e)
{
Clipboard.Clear();
}
然后我将以下代码添加到 Form LoadEvent 中:
if (Clipboard.GetDataObject() != null)
{
this.pn1_BtnPaste.Enabled = true;
}
它启用了一个按钮,这对我来说很奇怪。谁能解释为什么会这样?
编辑:
因为我理解错了,让我改一下代码,让它更清楚:
private void button2_Click(object sender, EventArgs e)
{
Clipboard.Clear();
if (Clipboard.GetDataObject() != null)
{
this.pn1_BtnPaste.Enabled = true;
}
else
this.pn1_BtnPaste.Enabled = false;
}
我点击 "button2" 并且 "pn1_BtnPaste" 仍然启用。
数据可以随时出现在剪贴板上。 Application.Idle 事件是更新按钮状态的好方法:
public Form1() {
InitializeComponent();
Application.Idle += Application_Idle;
}
保险起见,等window收盘时,您必须再次退订:
protected override void OnFormClosed(FormClosedEventArgs e) {
Application.Idle -= Application_Idle;
base.OnFormClosed(e);
}
Clipboard.GetDataObject() 并不像您想象的那样工作,它永远不会 returns null。如果你想处理 any 数据,那么你可以像这样编写事件处理程序:
private void Application_Idle(object sender, EventArgs e) {
PasteButton.Enabled = Clipboard.GetDataObject().GetFormats().Length > 0;
}
但是您很可能会发现处理每一种可能的格式比您想象的要实用得多。
我想检查剪贴板是否包含数据,如果没有,请启用 "Paste" 按钮。但不幸的是,即使我清除了剪贴板,它仍然没有显示它是空的。我正在使用 Windows 表格。
我手动清除剪贴板:
private void button2_Click(object sender, EventArgs e)
{
Clipboard.Clear();
}
然后我将以下代码添加到 Form LoadEvent 中:
if (Clipboard.GetDataObject() != null)
{
this.pn1_BtnPaste.Enabled = true;
}
它启用了一个按钮,这对我来说很奇怪。谁能解释为什么会这样?
编辑: 因为我理解错了,让我改一下代码,让它更清楚:
private void button2_Click(object sender, EventArgs e)
{
Clipboard.Clear();
if (Clipboard.GetDataObject() != null)
{
this.pn1_BtnPaste.Enabled = true;
}
else
this.pn1_BtnPaste.Enabled = false;
}
我点击 "button2" 并且 "pn1_BtnPaste" 仍然启用。
数据可以随时出现在剪贴板上。 Application.Idle 事件是更新按钮状态的好方法:
public Form1() {
InitializeComponent();
Application.Idle += Application_Idle;
}
保险起见,等window收盘时,您必须再次退订:
protected override void OnFormClosed(FormClosedEventArgs e) {
Application.Idle -= Application_Idle;
base.OnFormClosed(e);
}
Clipboard.GetDataObject() 并不像您想象的那样工作,它永远不会 returns null。如果你想处理 any 数据,那么你可以像这样编写事件处理程序:
private void Application_Idle(object sender, EventArgs e) {
PasteButton.Enabled = Clipboard.GetDataObject().GetFormats().Length > 0;
}
但是您很可能会发现处理每一种可能的格式比您想象的要实用得多。