C# can';t获取菜单条上轨迹栏的值
我已经手动在菜单条中添加了一个轨迹栏,因为VS2008不允许我这样做。 但是,我无法获得trackbar的值 表格1.cs:C# can';t获取菜单条上轨迹栏的值,c#,menustrip,trackbar,C#,Menustrip,Trackbar,我已经手动在菜单条中添加了一个轨迹栏,因为VS2008不允许我这样做。 但是,我无法获得trackbar的值 表格1.cs: [ToolStripItemDesignerAvailability(ToolStripItemDesignerAvailability.MenuStrip | ToolStripItemDesignerAvailability.ContextMenuStrip)] public c
[ToolStripItemDesignerAvailability(ToolStripItemDesignerAvailability.MenuStrip |
ToolStripItemDesignerAvailability.ContextMenuStrip)]
public class TrackBarMenuItem : ToolStripControlHost
{
private TrackBar trackBar;
public TrackBarMenuItem()
: base(new TrackBar())
{
this.trackBar = this.Control as TrackBar;
trackBar.TickFrequency = 1;
trackBar.Maximum = 255;
trackBar.LargeChange = 5;
trackBar.SmallChange = 2;
}
}
表格1.Designer.cs:
private TrackBarMenuItem trackBar1;
//
// trackBar1
//
this.trackBar1.Name = "trackBar1";
this.trackBar1.Size = new System.Drawing.Size(104, 25);
我需要这样使用它:
private void trackBar1_Scroll(object sender, System.EventArgs e)
{
int valueB = trackBar1.Value;
pictureBox2.Image = Deneme(new Bitmap(pictureBox1.Image),valueB);
}
但我得到了这个错误:
错误1“GoRunTuileMe2.Form1.TrackBarMenuItem”不包含
“Value”的定义,并且没有接受
类型为“GoRunTuileMe2.Form1.TrackBarMenuItem”的第一个参数可能
被找到(是否缺少using指令或程序集引用?)
有什么想法吗?你的类
TrackBarMenuItem
是否有一个名为Value
的属性?如果没有,则必须添加它。在新的TrackBarMenuItem类中将内部Trackbar对象的值作为属性公开:
Value { get { return trackBar.Value; } set { trackBar.Value = value; } }
我正在添加我找到的解决方案。可能有人需要它:
[System.ComponentModel.DesignerCategory("code")]
[ToolStripItemDesignerAvailability(ToolStripItemDesignerAvailability.ContextMenuStrip | ToolStripItemDesignerAvailability.MenuStrip)]
public partial class ToolStripMenuItem : ToolStripControlHost
{
public ToolStripMenuItem()
: base(CreateControlInstance())
{
}
/// <summary>
/// Create a strongly typed property called TrackBar - handy to prevent casting everywhere.
/// </summary>
public TrackBar TrackBar
{
get
{
return Control as TrackBar;
}
}
/// <summary>
/// Create the actual control, note this is static so it can be called from the
/// constructor.
///
/// </summary>
/// <returns></returns>
private static Control CreateControlInstance()
{
TrackBar t = new TrackBar();
t.AutoSize = false;
t.Height = 16;
t.Maximum = 255;
// Add other initialization code here.
return t;
}
[DefaultValue(0)]
public int Value
{
get { return TrackBar.Value; }
set { TrackBar.Value = value; }
}
/// <summary>
/// Attach to events we want to re-wrap
/// </summary>
/// <param name="control"></param>
protected override void OnSubscribeControlEvents(Control control)
{
base.OnSubscribeControlEvents(control);
TrackBar trackBar = control as TrackBar;
trackBar.ValueChanged += new EventHandler(trackBar_ValueChanged);
}
/// <summary>
/// Detach from events.
/// </summary>
/// <param name="control"></param>
protected override void OnUnsubscribeControlEvents(Control control)
{
base.OnUnsubscribeControlEvents(control);
TrackBar trackBar = control as TrackBar;
trackBar.ValueChanged -= new EventHandler(trackBar_ValueChanged);
}
/// <summary>
/// Routing for event
/// TrackBar.ValueChanged -> ToolStripTrackBar.ValueChanged
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void trackBar_ValueChanged(object sender, EventArgs e)
{
// when the trackbar value changes, fire an event.
if (this.ValueChanged != null)
{
ValueChanged(sender, e);
}
}
// add an event that is subscribable from the designer.
public event EventHandler ValueChanged;
// set other defaults that are interesting
protected override Size DefaultSize
{
get
{
return new Size(200, 16);
}
}
}
[System.ComponentModel.DesignerCategory(“代码”)]
[ToolStripItemDesignerAvailability(ToolStripItemDesignerAvailability.ContextMenuStrip | ToolStripItemDesignerAvailability.MenuStrip)]
公共部分类ToolStripMenuItem:ToolStripControlHost
{
公共工具StripMenuItem()
:base(CreateControlInstance())
{
}
///
///创建名为TrackBar-handy的强类型属性,以防止到处强制转换。
///
公共轨迹栏轨迹栏
{
得到
{
返回控制作为轨迹栏;
}
}
///
///创建实际控件,注意这是静态的,因此可以从
///构造器。
///
///
///
私有静态控件CreateControlInstance()
{
轨迹栏t=新轨迹栏();
t、 AutoSize=false;
t、 高度=16;
t、 最大值=255;
//在此处添加其他初始化代码。
返回t;
}
[默认值(0)]
公共整数值
{
获取{return TrackBar.Value;}
设置{TrackBar.Value=Value;}
}
///
///附加到我们要重新包装的事件
///
///
SubscribeControlEvents上受保护的覆盖无效(控制)
{
基础。订阅控制(控制);
TrackBar TrackBar=作为TrackBar的控件;
trackBar.ValueChanged+=新的事件处理程序(trackBar\u ValueChanged);
}
///
///从事件中分离。
///
///
受保护的覆盖无效OnSubscribeControlEvents(控制)
{
base.OnUnsubscribeControlEvents(控制);
TrackBar TrackBar=作为TrackBar的控件;
trackBar.ValueChanged-=新的事件处理程序(trackBar\u ValueChanged);
}
///
///事件路由
///TrackBar.ValueChanged->ToolStripTrackBar.ValueChanged
///
///
///
void trackBar_值已更改(对象发送方,事件参数e)
{
//当轨迹栏值更改时,触发事件。
如果(this.ValueChanged!=null)
{
值已更改(发送方,e);
}
}
//添加可从设计器订阅的事件。
公共事件处理程序值已更改;
//设置其他有趣的默认值
受保护的覆盖大小DefaultSize
{
得到
{
返回新尺寸(200,16);
}
}
}
如果将其添加到代码中,则可以通过设计器将轨迹栏添加为ToolStripMenuItem