SourceControl Null

时间:2016-01-27 14:45:24

标签: c# winforms

我创建了一个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但是还没有成功。

You can see the debug here

1 个答案:

答案 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的实例。这将自动在正确的位置显示上下文菜单条并使用正确的源控件。