我创建了一个ContextMenuStrip
(称为MenuPanels),创建了一个右键菜单。
我有TableLayoutPanel
个面板矩阵,我已经为每个面板添加了Mouse_Click
个事件,然后放置了
if(e.Button == MouseButtons.Right)
{
MenuPanels.Show(Cursor.Position);
}
作为活动的一部分。
在MenuPanels中,我添加了一个删除选项,其目的是更改面板的backgroundImage。
我已经阅读了许多关注类似事实的其他问题,但是由于SourceControl返回null,因此无法通过ContextMenuStrip
调用Panel。
我已尝试here中的方法。
并且还尝试从Opening事件(has suggested here)获取SourceControl但是还没有成功。
答案 0 :(得分:1)
请勿使用public GetOptionsTask(XMLPortalGetOptions request) {
super(request);
}
protected void onCancelled(){
// TODO afficher message pas d'options sur le disque
}
@Override
public void handleError(Transaction transaction) {
// TODO afficher message pas d'options sur le disque
}
@Override
public void handleSuccess(Transaction transaction) {
saveOptions(transaction.getResponse());
request = null;
Log.d(OptionsManager.class.getName(), this.getStatus().toString());
}
事件来显示上下文菜单。而是将控件的protected BaseXMLTransaction request;
public abstract void handleError(Transaction transaction);
public abstract void handleSuccess(Transaction transaction);
public TransactionTask(BaseXMLTransaction request){
this.request = request;
}
@Override
protected Void doInBackground(Void... params) {
try {
Log.i(TransactionTask.class.getName(), "Doing in background");
SocketHandler.sendTransaction(this, request.getRequest());
} catch (SocketHandlerNotConfiguredException e) {
Log.e(TransactionTask.class.getName(), "SocketHandler's parameters were not set.");
}
return null;
}
@Override
public void transactionResult(Transaction transaction) {
switch (transaction.getCode()) {
case ERROR:
Log.e(TransactionTask.class.getName(), "ERROR !!!");
handleError(transaction);
break;
case NO_CLIENT:
Log.e(TransactionTask.class.getName(), "No Client Error");
handleError(transaction);
break;
case NO_SERVER:
Log.e(TransactionTask.class.getName(), "No Server Error");
handleError(transaction);
break;
case OLD_VERSION:
Log.e(TransactionTask.class.getName(), "Old Version");
handleError(transaction);
break;
case TIMEOUT:
Log.e(TransactionTask.class.getName(), "Transaction Timeout");
handleError(transaction);
break;
case SUCCESS:
Log.i(TransactionTask.class.getName(), "Transaction Success");
handleSuccess(transaction);
}
}
属性设置为MouseClick
的实例。这将自动在正确的位置显示上下文菜单条并使用正确的源控件。