C# 委托指令C出错#
我是C#新手,有很多困难,但现在我仍在尝试将eventhandler添加到声明的控件中,就像变量一样,但如果我使用委托指令,我无法放置此事件,因为当我使用声明时:C# 委托指令C出错#,c#,C#,我是C#新手,有很多困难,但现在我仍在尝试将eventhandler添加到声明的控件中,就像变量一样,但如果我使用委托指令,我无法放置此事件,因为当我使用声明时: private delegate void listView1_MouseUp(object sender, MouseEventArgs e) 我在这个论坛上看到的一个过程中出现了很多错误,但我会把所有的过程都告诉你们 private void Form1_Load(object sender, Event
private delegate void listView1_MouseUp(object sender, MouseEventArgs e)
我在这个论坛上看到的一个过程中出现了很多错误,但我会把所有的过程都告诉你们
private void Form1_Load(object sender, EventArgs e)
{
// Set the view to show details.
listView1.View = View.Details;
// Allow the user to edit item text.
listView1.LabelEdit = true;
// Allow the user to rearrange columns.
listView1.AllowColumnReorder = true;
// Select the item and subitems when selection is made.
listView1.FullRowSelect = false;
// Display grid lines.
listView1.GridLines = true;
// Sort the items in the list in ascending order.
listView1.Sorting = SortOrder.Ascending;
//Hide Column Header
listView1.HeaderStyle = ColumnHeaderStyle.None;
// Create three items and three sets of subitems for each item.
ListViewItem[] ItemsView = new ListViewItem[Quant_Items];
while (Item_Number <= (Quant_Items - 1))
{
ItemsView[Item_Number] = new ListViewItem(Item_name + Item_Number);
while (Sub_Item <= (Quant_SubItems - 1))
{
ItemsView[Item_Number].SubItems.Add("SubItem" + Sub_Item);
Sub_Item++;
}
Item_Number++;
}
Sub_Item = 0;
while (Sub_Item <= (Quant_SubItems - 1))
{
listView1.Columns.Add("Coluna" + Sub_Item);
Sub_Item++;
}
//Add the items to the ListView.
listView1.Items.AddRange(ItemsView);
//Autosize ListView
listView1.Bounds = new Rectangle(new Point(10, 10), new Size(Quant_SubItems * 70, Quant_Items * 18));
// Add the ListView to the control collection.
this.Controls.Add(listView1);
listView1.MouseUp += new EventHandler(listView1_MouseUp);
}
//____________________________________________________________________
private delegate void listView1_MouseUp(object sender, MouseEventArgs e)
{
ListViewHitTestInfo i = listView1.HitTest(e.X, e.Y);
SelectedLSI = i.SubItem;
if (SelectedLSI == null)
return;
int border = 0;
switch (listView1.BorderStyle)
{
case BorderStyle.FixedSingle:
border = 1;
break;
case BorderStyle.Fixed3D:
border = 2;
break;
}
int CellWidth = SelectedLSI.Bounds.Width;
int CellHeight = SelectedLSI.Bounds.Height;
int CellLeft = border + listView1.Left + i.SubItem.Bounds.Left;
int CellTop = listView1.Top + i.SubItem.Bounds.Top;
// First Column
if (i.SubItem == i.Item.SubItems[0])
CellWidth = listView1.Columns[0].Width;
TxtEdit.Location = new Point(CellLeft, CellTop);
TxtEdit.Size = new Size(CellWidth, CellHeight);
TxtEdit.Visible = true;
TxtEdit.BringToFront();
TxtEdit.Text = i.SubItem.Text;
TxtEdit.Select();
TxtEdit.SelectAll();
}
private void listView2_MouseDown(object sender, MouseEventArgs e)
{
HideTextEditor();
}
private void listView2_Scroll(object sender, EventArgs e)
{
HideTextEditor();
}
private void TxtEdit_Leave(object sender, EventArgs e)
{
HideTextEditor();
}
private void TxtEdit_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter || e.KeyCode == Keys.Return)
HideTextEditor();
}
private void HideTextEditor()
{
TxtEdit.Visible = false;
if (SelectedLSI != null)
SelectedLSI.Text = TxtEdit.Text;
SelectedLSI = null;
TxtEdit.Text = "";
}
}
private void Form1\u加载(对象发送方,事件参数e)
{
//将视图设置为显示详细信息。
listView1.View=View.Details;
//允许用户编辑项目文本。
listView1.LabelEdit=true;
//允许用户重新排列列。
listView1.AllowColumnReorder=true;
//进行选择时选择项目和子项目。
listView1.FullRowSelect=false;
//显示网格线。
listView1.GridLines=true;
//按升序对列表中的项目进行排序。
listView1.Sorting=SortOrder.升序;
//隐藏列标题
listView1.HeaderStyle=ColumnHeaderStyle.None;
//为每个项目创建三个项目和三组子项目。
ListViewItem[]ItemsView=新建ListViewItem[Quant_Items];
而(项目编号只需使用此项:
private void listView1_MouseUp(object sender, MouseEventArgs e)
{
...
}
delegate
关键字不属于方法声明,在该上下文中无效。只需使用以下内容:
private void listView1_MouseUp(object sender, MouseEventArgs e)
{
...
}
delegate
关键字不属于方法声明,在该上下文中无效。处理事件时,必须提供与此事件预期的委托类型匹配的处理程序。Loosley说,您需要一个具有处理程序预期的相同签名的方法
对于MouseUp
,您需要提供MouseEventHandler
,请参阅
您需要将事件订阅更改为
listView1.MouseUp += new MouseEventHandler(listView1_MouseUp);
然后将处理程序的签名更改为
private void listView1_MouseUp(object sender, MouseEventArgs e) { /*..*/}
处理事件时,必须提供一个与此事件预期的委托类型匹配的处理程序。Loosley说,您需要一个具有处理程序预期的相同签名的方法
对于MouseUp
,您需要提供MouseEventHandler
,请参阅
您需要将事件订阅更改为
listView1.MouseUp += new MouseEventHandler(listView1_MouseUp);
然后将处理程序的签名更改为
private void listView1_MouseUp(object sender, MouseEventArgs e) { /*..*/}
为什么要在该方法定义中添加delegate
?您希望它做什么?您的方法应该被定义为private void listView1\u MouseUp(对象发送者,MouseEventArgs e)
,并且您可以像listView1.MouseUp+=new MouseEventHandler(listView1\u MouseUp)那样连接事件
CodeCaster:我希望创建一个带有事件listView1\u MouseUp的控件,但如果我不使用委托,则会出现此错误:“listView1\u MouseUp的重载与委托的“EventHandler”WinFormsDemoApp匹配”因此,我在本论坛中看到了一种解决此错误的方法,将委托放入声明事件中。Rob,我曾尝试过这种方法,但我之前所说的错误CS0123“listView1\u MouseUp的无重载与委托的EventHandler WinFormsDemoApp匹配”,出现。您为什么在该方法定义中放置委托
?您希望它做什么?您的方法应定义为私有无效列表视图1_MouseUp(对象发送方,MouseEventArgs e)
,并连接事件,如列表视图1.MouseUp+=new MouseEventHandler(列表视图1_MouseUp)
CodeCaster:我希望创建一个带有事件listView1\u MouseUp的控件,但如果我不使用委托,则会出现此错误:“listView1\u MouseUp的重载与委托的“EventHandler”WinFormsDemoApp匹配”因此,我在这个论坛中看到了一种解决此错误的方法,将委托放入声明事件中。Rob,我曾尝试过这种方法,但我之前如何说错误,出现了CS0123“没有重载,因为'listView1_MouseUp'匹配委托'EventHandler'WinFormsDemoApp”。您好,我尝试过这种方法,但我之前如何说错误,CS0123出现“listView1\u MouseUp”的无重载匹配委托“EventHandler”WinFormsDemoApp”。您好,我尝试过这种方式,但我之前说的错误CS0123“listView1\u MouseUp的无重载匹配委托“EventHandler”WinFormsDemoApp。您好,我尝试过这种方式,但我之前说的错误CS0123出现了“listView1\u MouseUp”没有重载匹配代理“EventHandler”WinFormsDemoApp”,出现。您是否执行了我在回答中提到的第一个更改?+=新建MouseEventHandler..
?您好,我尝试过这种方法,但我前面说的错误是:“listView1\u MouseUp”没有重载匹配代理“EventHandler”WinFormsDemoApp,出现。您是否执行了我在回答中提到的第一个更改?+=new MouseEventHandler..
?