Попробуйте разместить переменную номера изображения вне двух методов нажатия кнопки. Это сделает его доступным для обоих методов. Вот так:
int i = 0; // Place it here instead
private void Button1_Click(object sender, EventArgs e)
{
// Assign i here like you did
i = r.Next();
}
private void Button2_Click(object sender, EventArgs e)
{
// i is usable here now!
}
Причина, по которой он не был доступен в вашем примере, заключается в том, что каждый метод находится в отдельной области видимости. Переменные, объявленные в одной области видимости, «невидимы» для другой области видимости. Таким образом, переменные, которые вы объявляете внутри MethodA (), невидимы для MethodB ().