Frm Form1 = new Frm();
//here I always get the count =0
if (Form1 .listBox2 .SelectedItems .Count > 0)
{
string item;
foreach (int i in Form1.listBox2.SelectedIndices)
{
item = Form1.listBox2.Items[i].ToString();
当我在Frm中做同样的事情时,我在这里获得所选项目的实际数量是Frm中的代码
public void btnPostText_Click(object sender, EventArgs e)
{
listBox2.ClearSelected();
if (listBox1.SelectedItems.Count > 0)
{
foreach (int index in listBox1.SelectedIndices)
listBox2.SetSelected(index, true);
}
从我的程序我试图在登录过程中同时在facebook上发布多个组,用户选择他/她想要发布到listBox2中litBox1的组名称,其中有组ID( s)以相同的顺序,所以当用户点击btnPostText我将选择从listBox1移动到listBox2',,,现在在Class2`我想知道是否在listBox2中选择了任何项目,第一个代码在Class2中。 PostImg public static bool PostImg(,,,)
Class2包含post过程,就像Postimg一样,如果发布则返回true,否则返回false
这里我在Frm中调用它
if (Class2.PostImage(AppSettings.Default.AccessToken, textbox1.Text, textboxpic.Text) == true)
MessageBox.Show("Post Done");
Class2中的代码是
public static bool PostImage(string AccessToken, string Status, string ImagePath)
{
try
{
Frm Frm = new Frm();
if (Frm .listBox2 .SelectedItems .Count > 0)
{
string item;
foreach (int i in Frm.listBox2.SelectedIndices)
{
item = Frm.listBox2.Items[i].ToString();
groupid = item;
FacebookClient fbpost = new FacebookClient(AccessToken);
var imgstream = File.OpenRead(ImagePath);
dynamic res = fbpost.Post("/" + groupid + "/photos", new
{
message = Status,
File = new FacebookMediaStream
{
ContentType = "image/jpg",
FileName = Path.GetFileName(ImagePath)
}.SetValue(imgstream)
});
result = true;
}
}
return result;
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message);
return false;
}
答案 0 :(得分:3)
首先,一些基础知识。 Class2
和Frm
是两个不同的类。 通常除非您在它们之间传递引用,否则它们无法看到对方。
Frm
可以在Class2中看到PostImage
方法,因为它被标记为static
。但它不会走另一条路。因此,当您致电Frm
时,您需要将引荐传递给PostImage
。最简单的方法是在方法签名中包含它:
public static bool PostImage(string AccessToken, string Status, string ImagePath, Frm MyForm)
现在你打电话给它:
if (Class2.PostImage(AppSettings.Default.AccessToken, textbox1.Text, textboxpic.Text, this) == true)
注意我们如何将this
作为参数传递给函数。这是我们将在PostImage
:
if (MyForm.listBox2.SelectedItems .Count > 0)
依此类推。变量MyForm
现在是对名为Class2.PostImage
。
答案 1 :(得分:1)
然后你应该将对表单(或listBox)的引用作为PostImg
方法的参数传递。
public static bool PostImg(Frm form, string AccessToken, string Status, string ImagePath )
{
try
{
if (form.listBox2.SelectedItems.Count > 0)
{
string item;
foreach (int i in form.listBox2.SelectedIndices)
{
item = form.listBox2.Items[i].ToString();
groupid = item;
FacebookClient fbpost = new FacebookClient(AccessToken);
var imgstream = File.OpenRead(ImagePath);
dynamic res = fbpost.Post("/" + groupid + "/photos", new
{
message = Status,
File = new FacebookMediaStream
{
ContentType = "image/jpg",
FileName = Path.GetFileName(ImagePath)
}.SetValue(imgstream)
});
result = true;
}
}
return result;
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message);
return false;
}
}
并从表单中的方法调用它:
if (Class2.PostImage(this, AppSettings.Default.AccessToken, textbox1.Text, textboxpic.Text) == true)
MessageBox.Show("Post Done");