foreach (DataGridViewRow row in dataGridView1.SelectedRows)
{
object[] items = new object[row.Cells.Count];
for (int i = 0; i < row.Cells.Count; i++)
{
items[i] = row.Cells[i].Value;
}
dataGridView2.Rows.Add(items);
// fromDGV.Rows.Delete(row);
}
public static void NotifySystemOfNewRegistration() {
tagOPENASINFO info = new tagOPENASINFO();
info.cszFile = "https";
info.cszClass = null;
info.oaifInFlags = tagOPEN_AS_INFO_FLAGS.OAIF_FORCE_REGISTRATION |
tagOPEN_AS_INFO_FLAGS.OAIF_URL_PROTOCOL |
tagOPEN_AS_INFO_FLAGS.OAIF_REGISTER_EXT;
SHOpenWithDialog(IntPtr.Zero, ref info);
}
// http://msdn.microsoft.com/en-us/library/windows/desktop/bb773363(v=vs.85).aspx
private struct tagOPENASINFO {
[MarshalAs(UnmanagedType.LPWStr)]
public string cszFile;
[MarshalAs(UnmanagedType.LPWStr)]
public string cszClass;
[MarshalAs(UnmanagedType.I4)]
public tagOPEN_AS_INFO_FLAGS oaifInFlags;
}
[Flags]
private enum tagOPEN_AS_INFO_FLAGS {
OAIF_ALLOW_REGISTRATION = 0x00000001, // Show "Always" checkbox
OAIF_REGISTER_EXT = 0x00000002, // Perform registration when user hits OK
OAIF_EXEC = 0x00000004, // Exec file after registering
OAIF_FORCE_REGISTRATION = 0x00000008, // Force the checkbox to be registration
OAIF_HIDE_REGISTRATION = 0x00000020, // Vista+: Hide the "always use this file" checkbox
OAIF_URL_PROTOCOL = 0x00000040, // Vista+: cszFile is actually a URI scheme; show handlers for that scheme
OAIF_FILE_IS_URI = 0x00000080 // Win8+: The location pointed to by the pcszFile parameter is given as a URI
}
// http://www.pinvoke.net/default.aspx/shell32.SHOpenWithDialog
[DllImport("shell32.dll", EntryPoint = "SHOpenWithDialog", CharSet = CharSet.Unicode)]
private static extern int SHOpenWithDialog(IntPtr hWndParent, ref tagOPENASINFO oOAI);
var data = (JObject)JsonConvert.DeserializeObject("данные JSON");
foreach(JObject item in data["response"]["items"])
{
// var photos = item.Properties().Where(p => p.Name.StartsWith("photo_")).ToArray();
// если считать, что последнее изображение самое большое
var photo = item.Properties().LastOrDefault(p => p.Name.StartsWith("photo_") &&
p.Value != null &&
p.Value.ToString() != ""
);
/*
// вариант с извлечением номера и сортировкой
// при условии, что после photo_ всегда будет число
// (если нет, то придется это учитывать отдельно)
var photo = item.Properties().Where(p => p.Name.StartsWith("photo_") &&
p.Value != null &&
p.Value.ToString() != ""
).OrderBy(p => Convert.ToInt32(p.Name.Substring(p.Name.LastIndexOf("_") + 1))).LastOrDefault();
*/
if (photo != null)
{
// выводим адрес изображения в консоль
Console.WriteLine(photo.Value.ToString());
}
}
mono helloworld.exe
dotnet helloworld.exe
# выполнение из исходного кода в текущем каталоге:
dotnet run