1) Вам нужно будет написать код для проверки попадания, который будет использоваться в событии щелчка мышью. Вам необходимо проверить местоположение на экране каждого из ваших объектов, чтобы определить, какой (если есть) объект находился «под» указателем при нажатии мыши. Оттуда вы можете отобразить соответствующее контекстное меню для функциональности, которую вы хотите реализовать.
2) Если вы просто хотите сохранить информацию для последующего повторного открытия приложением, простая сериализация в XML или Binary будет работать нормально. Если целью является создание удобочитаемого пользователем контента, вам необходимо написать простой экспорт в CSV или, если выходные данные должны быть более сложными, настраиваемый сериализатор.
Подробнее:
Тестирование попадания - это общий термин для оценки объекта, по которому щелкнули, например, когда вы щелкаете в DataGridView, логика тестирования попадания может сказать вам, по какой ячейке / строке / столбцу был нажат Многие классы Widget, включая DataGridView, имеют метод HitTest, который возвращает объект, который предоставляет эту информацию. Если инструмент потоковой диаграммы использует пользовательский чертеж для связанных объектов, вам придется выполнить работу с использованием координат щелчка, чтобы определить, на каком элементе в потоковой диаграмме был выбран элемент.
http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.hittest.aspx документирует метод HitTest для DataGridView.
http://www.codeproject.com/KB/list/CSharpHitTest.aspx - это пример программы на CodeProject, которая выполняет проверку логики в ListView.