Скрыть NSMenu программно из NSStatusItem

У меня есть это приложение, которое показывает элемент в строке состояния системы, и один из элементов представляет собой настраиваемое представление с NSTextField и NSButton. Когда пользователь щелкает элемент строки состояния, отображается меню, пользователь вводит текст и нажимает кнопку. Это запускает действие, которое отображает окно.

Проблема, с которой я столкнулся, заключается в том, что при нажатии кнопки действие запускается, но меню остается видимым. Я хочу скрыть меню, потому что действие уже было обработано.

Я поискал через API, но не нашел, как это сделать.

Есть идеи?

Вот как я ' m создание меню: Я использую этот класс для отправки текстовых значений в сценарий PHP, который анализирует данные и отправляет отформатированное электронное письмо по адресам. The ...

Мне нужно отправить изображение с Windows Phone 7 на некоторые адреса электронной почты. Я использую этот класс для отправки текстовых значений в сценарий PHP, который анализирует данные и отправляет отформатированное электронное письмо по адресам. Проблема в том, что я не могу понять, как отправить изображение в этот сценарий, чтобы прикрепить изображение к электронной почте. Скрипт PHP можно изменить любым способом. Если у меня есть объект Image, как мне изменить этот класс, чтобы разрешить отправку изображений?

public class PostSubmitter
{
    public string url { get; set; }
    public Dictionary<string, string> parameters { get; set; }

    public PostSubmitter() { }

    public void Submit()
    {
        // Prepare web request...
        HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
        myRequest.Method = "POST";
        myRequest.ContentType = "application/x-www-form-urlencoded";

        myRequest.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), myRequest);
    }

    private void GetRequestStreamCallback(IAsyncResult asynchronousResult)
    {
        HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
        System.IO.Stream postStream = request.EndGetRequestStream(asynchronousResult);

        // Prepare Parameters String
        string parametersString = "";
        foreach (KeyValuePair<string, string> parameter in parameters)
        {
            parametersString = parametersString + (parametersString != "" ? "&" : "") + string.Format("{0}={1}", parameter.Key, parameter.Value);
        }

        byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(parametersString);
        // Write to the request stream.
        postStream.Write(byteArray, 0, parametersString.Length);
        postStream.Close();
        // Start the asynchronous operation to get the response
        request.BeginGetResponse(new AsyncCallback(GetResponseCallback), request);
    }

    private void GetResponseCallback(IAsyncResult asynchronousResult)
    {
        HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
        HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);
        Stream streamResponse = response.GetResponseStream();
        StreamReader streamRead = new StreamReader(streamResponse);
        string responseString = streamRead.ReadToEnd();
        // Close the stream object
        streamResponse.Close();
        streamRead.Close();
        // Release the HttpWebResponse
        response.Close();
        //Action<string> act = new Action<string>(DisplayResponse);
        //this.Dispatcher.BeginInvoke(act, responseString);
    }

Я использую класс следующим образом:

Dictionary<string, string> data = new Dictionary<string, string>()
{
        {"nom", nom.Text},
        {"cognoms", cognoms.Text},
        {"email", email.Text},
        {"telefon", telefon.Text}
};

PostSubmitter post = new PostSubmitter() { url = "http://example.com/parserscript.php", parameters = data };
post.Submit();

Большое спасибо!

6
задан enkara 11 April 2011 в 14:36
поделиться