Tag: winforms

跨多个控件共享事件处理程序

在用C#编写的Windows窗体应用程序中,我有一堆按钮。 当用户的鼠标hover在按钮上时,我希望按钮的边框发生变化。 目前我有以下多个实例(每个按钮的副本): private void btnStopServer_MouseEnter(object sender, EventArgs e) { oldColor = btnStopServer.FlatAppearance.BorderColor; btnStopServer.FlatAppearance.BorderColor = mouseOverColor; } private void btnStopServer_MouseLeave(object sender, EventArgs e) { btnStopServer.FlatAppearance.BorderColor = oldColor; } 由于我有很多按钮,更改按钮边框颜色的代码占用了大量空间。 有没有更简单的方法可以做到这一点?

如何使用LockBits将黄色位图中的非黑色像素着色?

使用GetPixel和SetPixel很容易但很慢,所以我正在尝试使用LockBits。 我有很久以前做过的这种方法来比较两个图像: public static Bitmap FastComparison(Bitmap bmp1,Bitmap bmp2) { tolerancenumeric = 15; int tolerance = tolerancenumeric * tolerancenumeric + tolerancenumeric * tolerancenumeric + tolerancenumeric * tolerancenumeric; //dr * dr + dg * dg + db * db; bmp3 = new Bitmap(512,512); PixelFormat pxf = PixelFormat.Format24bppRgb; Rectangle rect = new Rectangle(0, 0, bmp1.Width, bmp1.Height); BitmapData bmpData1 […]

将PictureBox图像插入Sql Server数据库

我试图从图片picturebox插入一些图像: MemoryStream ms = new MemoryStream(); pictureBox1.Image.Save(ms, ImageFormat.Jpeg); byte[] photo = new byte[ms.Length]; ms.Position = 0; ms.Read(photo, 0, photo.Length); command.CommandText = “INSERT INTO ImagesTable (Image) VALUES(‘” + photo + “‘)”; command.CommandType = CommandType.Text; command.ExecuteNonQuery(); 我在数据库中得到以下结果: ID Image 6 0x53797374656D2E427974655B5D 但是当我使用SQL script插入一些图像时: insert into ImagesTable (Image) SELECT BulkColumn FROM Openrowset( Bulk ‘C:\pinguins.jpg’, Single_Blob) as img 然后插入的数据如下所示: […]

在WinForms中以可本地化的forms在运行时更改CurrentUICulture

我一直在搜索如何更改Localizable属性设置为true的Form的语言。 https://msdn.microsoft.com/en-us/library/system.threading.thread.currentuiculture(v=vs.110).aspx 这是设置表单的语言,但这需要在我们实例化表单之前设置。 此事件后无法调用此方法。 搜索信息,我看到了以下问题: https : //stackoverflow.com/a/11738932/3286975但是,正如评论所说,我在TabControl和MenuStrip中有控件,因此它们不受影响。 我试图通过获取表单的所有控件而没有运气来修改它。 在此菜单中,我调用以下回调: private void englishToolStripMenuItem_Click_1(object sender, EventArgs e) { string lang = (string) ((ToolStripMenuItem) sender).Tag; base.Culture = CultureInfo.CreateSpecificCulture(lang); } private void spanishToolStripMenuItem_Click(object sender, EventArgs e) { string lang = (string) ((ToolStripMenuItem) sender).Tag; base.Culture = CultureInfo.CreateSpecificCulture(lang); } 我通过使用标签来改变文化。 当我点击它没有任何反应。 另外,我从上述答案中修改了一点ApplyResources方法。 private void ApplyResources(Control parent, CultureInfo culture) { this.resManager.ApplyResources(parent, […]

通过TabControl中的单击或键禁用选项卡之间的切换

那么伙计们,是否可以通过NEXT按钮切换到另一个标签? 这意味着您无法通过单击其他选项卡切换到另一个选项卡页面。 我通常在NEXT按钮上使用的代码是这样的: tabControl1.SelectedTab = tabPage2;

对inheritance表单的控件是否被锁定,是否可以撤消?

建立: 我创建了一个我希望作为基础的表单,我将inheritance其他表单。 这个基本forms充当各种“模板”,但它也提供了与结构相关的大量function,以及所提供的所有控件的相互关系。 下面的图像的底漆…顶部信息色条是从ToolStripinheritance的自定义控件。 底部条带是另一个自定义,再次inheritance自ToolStrip 。 左边的白色块是一个TreeView ,右边的块是一个TabControl (从中删除了所有的TabPages ……我打算在inheritance的表单中添加它们)。 设计师中基本forms的图像: 设计师中inheritanceforms的图像: 显然,唯一的区别是,当我打开inheritance的表单时,我会在每个控件上叠加一个小盒子图标,当我点击它们时,我会看到挂锁告诉我无法编辑。 问题: inheritance表单上的所有控件都被锁定。 我已经研究了视觉inheritance的问题,据我所知,我没有使用任何明确不支持它的控件,因为这个链接表明存在。 在这个问答环节中 ,汉斯建议改变那些控件上的修改器,我已经完成了。 事实上,我尝试了Public和Protected ,都没有取得好成绩。 我很难过。

DataGridViewComboBoxColumn在第一次单击时不会打开下拉列表

在任何人将此标记为重复之前,请注意这与此处和此处提出的问题不同。 如果DataGridViewComboBoxColumn有两个或更多DataGridViewComboBoxColumn ,其中一个下拉列表当前处于打开状态,则单击其他列的下拉按钮不会打开该下拉列表。 相反,你仍然需要点击两次。 首次单击会隐藏已打开的下拉列表,第二次单击实际上会打开您单击的下拉列表。 请注意,当EditOnEnter模式为ON时,需要两次单击; 否则你必须执行三次点击才能完成这项工作。 我也尝试了ContentClick事件,没有任何好处。 那么当我的DataGridViewComboBoxColumn中有多个DataGridViewComboBoxColumn时,如何使用一键操作? 更新 以防万一有人想要重现它,这是一个过程: 创建一个新的WinForms C#项目。 转到Form1的代码并将其粘贴到InitializeComponent行之后的构造函数中: DataGridView dgv = new DataGridView(); DataGridViewComboBoxColumn col1 = new DataGridViewComboBoxColumn(); DataGridViewComboBoxColumn col2 = new DataGridViewComboBoxColumn(); dgv.Columns.AddRange(new DataGridViewColumn[] { col1, col2 }); dgv.Dock = DockStyle.Fill; dgv.EditMode = DataGridViewEditMode.EditOnEnter; col1.Items.AddRange(new object[] { “Cat”, “Dog”, “Elephant”, “Lion” }); col2.Items.AddRange(new object[] { “Duck”, “Hen”, “Crow”, […]

如何获取与特定文件夹关联的图标?

我的一个项目中需要我从其路径获取特定文件夹的图标。 例如: 如果我使用C:\Users\Username\Desktop我想获取与Desktop文件夹关联的图标 如果我使用具有自定义图标的文件夹的路径,我想获得该图标 不,我不想要一般默认文件夹图标 我一直在寻找将近3天没有运气。 任何帮助表示赞赏。

多行自动调整Scrollable FlowLayoutPanel

我有50张图片。 我需要在FlowLayoutPanel添加这些图像,在包裹行后第一行添加30个图像,在第二行添加20个图像。 所以我还需要在控件上显示滚动条。 我正在将video划分为帧(图像)并显示在FlowLayoutPanel 。 当我上传第一个video时,下面是设置图像的代码: for (i = 1; i < len – 1; i++) { ImagePanel mybt = new ImagePanel(storagePath + words[0] + "_" + i + ".jpg", words[0] + "_" + i + ".jpg"); flowLayoutPanel1.Controls.Add(mybt); } 之后,当我上传第二张图片时,我想要显示像第一行中的图像,我们在rest后有第一个video图像,我需要显示第二个video上传图像。 如果有人知道它怎么可能。

迭代图像像素并旋转颜色

我希望能够迭代位图图像并将值增加1,但是目前图像从内存流中返回的质量比之前差,并且变化根本不平滑。 private static Bitmap CyclePalette(Bitmap original) { using (var bitMapStream = new MemoryStream()) { original.Save(bitMapStream, format: ImageFormat.Gif); var newBitmap = new Bitmap(bitMapStream); var newPalette = newBitmap.Palette; for (var i = 0; i < newPalette.Entries.Length – 5; i++) { var oldColor = newPalette.Entries[i]; newPalette.Entries[i] = newPalette.Entries[i + 1]; newPalette.Entries[i + 1] = oldColor; } newBitmap.Palette = […]