|
Apologies for the shouting but this is important.
When answering a question please:
- Read the question carefully
- Understand that English isn't everyone's first language so be lenient of bad spelling and grammar
- If a question is poorly phrased then either ask for clarification, ignore it, or mark it down. Insults are not welcome
- If the question is inappropriate then click the 'vote to remove message' button
Insults, slap-downs and sarcasm aren't welcome. Let's work to help developers, not make them feel stupid.
cheers,
Chris Maunder
The Code Project Co-founder
Microsoft C++ MVP
|
|
|
|
|
For those new to message boards please try to follow a few simple rules when posting your question.- Choose the correct forum for your message. Posting a VB.NET question in the C++ forum will end in tears.
- Be specific! Don't ask "can someone send me the code to create an application that does 'X'. Pinpoint exactly what it is you need help with.
- Keep the subject line brief, but descriptive. eg "File Serialization problem"
- Keep the question as brief as possible. If you have to include code, include the smallest snippet of code you can.
- Be careful when including code that you haven't made a typo. Typing mistakes can become the focal point instead of the actual question you asked.
- Do not remove or empty a message if others have replied. Keep the thread intact and available for others to search and read. If your problem was answered then edit your message and add "[Solved]" to the subject line of the original post, and cast an approval vote to the one or several answers that really helped you.
- If you are posting source code with your question, place it inside <pre></pre> tags. We advise you also check the "Encode "<" (and other HTML) characters when pasting" checkbox before pasting anything inside the PRE block, and make sure "Use HTML in this post" check box is checked.
- Be courteous and DON'T SHOUT. Everyone here helps because they enjoy helping others, not because it's their job.
- Please do not post links to your question into an unrelated forum such as the lounge. It will be deleted. Likewise, do not post the same question in more than one forum.
- Do not be abusive, offensive, inappropriate or harass anyone on the boards. Doing so will get you kicked off and banned. Play nice.
- If you have a school or university assignment, assume that your teacher or lecturer is also reading these forums.
- No advertising or soliciting.
- We reserve the right to move your posts to a more appropriate forum or to delete anything deemed inappropriate or illegal.
cheers,
Chris Maunder
The Code Project Co-founder
Microsoft C++ MVP
|
|
|
|
|
1st attempt at creating a control. i have a class, that Inherits PictureBox
here are some custom properties
<Category("Boarder"), Description("Border Size")>
Public Property BorderSize As Integer
Get
Return borderSizeField
End Get
Set(ByVal value As Integer)
borderSizeField = value
Invalidate()
End Set
End Property
<Category("Boarder"), Description("Border Color")>
Public Property BorderColor As Color
Get
Return borderColorField
End Get
Set(ByVal value As Color)
borderColorField = value
Invalidate()
End Set
End Property
<Category("Boarder"), Description("Border Color2")>
Public Property BorderColor2 As Color
Get
Return borderColor2Field
End Get
Set(ByVal value As Color)
borderColor2Field = value
Invalidate()
End Set
End Property
If i select "Categorized" in the property grid of the control when i place it on the form, my properties are grouped together.
However, when i select "Alphabetized" they are not grouped.
Question: How can i have them grouped when "Alphabetized" is selected. Just like the Location property is on the picturebox control
|
|
|
|
|
You have only this 2 choices - "Categorized" and "in alphabetical order".
When you chose "Alphabetical" then all the Properties (as you allready mentioned) are sorted by their name.
A combination of both is not designated ...
|
|
|
|
|
if you like to have it like the (for example) Location-Property then you have to create a seperate class which has all your custom Properties in it and this class will be one Property of your Control.
Here is an example for you ... I hope you will not have circumstances with my german descriptions ...
<Category("Anzeige"), Description("Definition des Einheiten-Textes")>
<DesignerSerializationVisibility(DesignerSerializationVisibility.Content)>
ReadOnly Property Einheit As SpalteEinheitDefinition
Get
Return my_Unit
End Get
End Property
WithEvents my_Unit As New SpalteEinheitDefinition With {.Text = "mm"}
Private Sub Einheit_Changed() Handles my_Unit.Changed
ResizeElements()
'Me.Invalidate()
End Sub
<TypeConverter(GetType(ExpandableObjectConverter))>
Public Class SpalteEinheitDefinition
<Description("auszugebender Text")>
<Editor("System.ComponentModel.Design.MultilineStringEditor, System.Design", GetType(System.Drawing.Design.UITypeEditor))>
Property Text As String
Get
Return my_Text
End Get
Set(ByVal value As String)
my_Text = value
OnValueChanged()
End Set
End Property
Private my_Text As String = ""
<Description("Bestimmt die Ausrichtung des Textes im Control")>
<DefaultValue(GetType(HorizontalAlignment), "Center")>
Property TextAlign As HorizontalAlignment
Get
Return my_TextAlign
End Get
Set(ByVal value As HorizontalAlignment)
If my_TextAlign <> value Then
my_TextAlign = value
OnValueChanged()
End If
End Set
End Property
Private my_TextAlign As HorizontalAlignment = HorizontalAlignment.Center
<Description("gibt die Seiten-Abstände im Inneren des Controls an")>
<DefaultValue(GetType(Padding), "2,0,2,0")>
Property Padding As Padding
Get
Return my_Padding
End Get
Set(ByVal value As Padding)
my_Padding = value
OnValueChanged()
End Set
End Property
Private my_Padding As New Padding(2, 0, 2, 0)
Private Sub OnValueChanged()
RaiseEvent Changed()
End Sub
Public Event Changed()
'Sub New()
'OnValueChanged()
'End Sub
Overrides Function toString() As String
Return "<" & Text & ">"
End Function
End Class
modified 13hrs ago.
|
|
|
|
|
 Appreciate the sample.
Am almost there! now have everything under my category, now only issue is the following code.
FYI, i inherit a PictureBox on 1st class. then i have the category items on a 2nd class.
my problem is with the "OnPaint" event
Protected Overrides Sub OnPaint(ByVal pe As PaintEventArgs)
MyBase.OnPaint(pe)
Dim graph = pe.Graphics
Dim rectContourSmooth = Rectangle.Inflate(ClientRectangle, -1, -1)
Dim rectBorder = Rectangle.Inflate(rectContourSmooth, -m_borderSizeField, -m_borderSizeField)
Dim smoothSize = If(m_borderSizeField > 0, m_borderSizeField * 3, 1)
Dim newText = m_captiontext
Using borderGColor = New LinearGradientBrush(rectBorder, m_borderColorField, m_borderColor2Field, m_gradientAngleField)
Using pathRegion = New GraphicsPath()
Using penSmooth = New Pen(Parent.BackColor, smoothSize)
Using penBorder = New Pen(borderGColor, m_borderSizeField)
graph.SmoothingMode = SmoothingMode.AntiAlias
penBorder.DashStyle = m_borderLineStyleField
penBorder.DashCap = m_borderCapStyleField
pathRegion.AddEllipse(rectContourSmooth)
Region = New Region(pathRegion)
graph.DrawString(m_captiontext, New Font("Segoe UI", 12, FontStyle.Regular), New SolidBrush(Color.Black), m_captionx.X, m_captionx.Y, StringFormat.GenericDefault)
graph.DrawEllipse(penSmooth, rectContourSmooth)
If m_borderSizeField > 0 Then graph.DrawEllipse(penBorder, rectBorder)
End Using
End Using
End Using
End Using
End Sub the values with "m_" (these are in the 2nd class) give the following error message in the class view. I have the OnPaint in the 1st class.
(field) NewPictureBox.m_borderSizeField As TextLocation
Operator is not defined for type
i am at a loss. are you able to point me in direction so i have the "OnPaint" event in correct class??
Appreciate your help!
|
|
|
|
|
if I understand you right your new Property is working as you want ?
If Yes - please show me the code belonging to this Property AND the definition of the Class-Variable and the M_*-Variables.
I suppose that you are not using this Variable in the right way inside the OnPaint-Event ...
|
|
|
|
|
 Appreciate your help
here is complete class i am using.
again, my 1st attempt, picking up knowledge from this group!
Imports System.ComponentModel
Imports System.Drawing.Drawing2D
Public Class NewPictureBox
Inherits PictureBox
Public Sub New()
Size = New Size(100, 100)
SizeMode = PictureBoxSizeMode.Zoom
Me.m_properties = New TextLocation(Me)
Me.m_captiontext = New TextLocation(Me)
Me.m_captionx = New TextLocation(Me)
Me.m_captiony = New TextLocation(Me)
Me.m_borderSizeField = New TextLocation(Me)
Me.m_borderColorField = New TextLocation(Me)
Me.m_borderColor2Field = New TextLocation(Me)
Me.m_borderLineStyleField = New TextLocation(Me)
Me.m_borderCapStyleField = New TextLocation(Me)
Me.m_gradientAngleField = New TextLocation(Me)
End Sub
<DesignerSerializationVisibility(DesignerSerializationVisibility.Content)>
Public ReadOnly Property Properties() As TextLocation
Get
Return Me.m_properties
End Get
End Property
Friend Sub NotifyStateChanged(source As TextLocation, propertyName As String)
Me.Invalidate()
Debug.WriteLine("UIListBox: State changed.")
End Sub
Protected Overrides Sub OnResize(ByVal e As EventArgs)
MyBase.OnResize(e)
Size = New Size(Width, Width)
End Sub
Protected Overrides Sub OnPaint(ByVal pe As PaintEventArgs)
MyBase.OnPaint(pe)
Dim graph = pe.Graphics
Dim rectContourSmooth = Rectangle.Inflate(ClientRectangle, -1, -1)
Dim rectBorder = Rectangle.Inflate(rectContourSmooth, -m_borderSizeField, -m_borderSizeField)
Dim smoothSize = If(m_borderSizeField > 0, m_borderSizeField * 3, 1)
Dim newText = m_captiontext
Using borderGColor = New LinearGradientBrush(rectBorder, m_borderColorField, m_borderColor2Field, m_gradientAngleField)
Using pathRegion = New GraphicsPath()
Using penSmooth = New Pen(Parent.BackColor, smoothSize)
Using penBorder = New Pen(borderGColor, m_borderSizeField)
graph.SmoothingMode = SmoothingMode.AntiAlias
penBorder.DashStyle = m_borderLineStyleField
penBorder.DashCap = m_borderCapStyleField
pathRegion.AddEllipse(rectContourSmooth)
Region = New Region(pathRegion)
graph.DrawString(m_captiontext, New Font("Segoe UI", 12, FontStyle.Regular), New SolidBrush(Color.Black), m_captionx.X, m_captionx.Y, StringFormat.GenericDefault)
graph.DrawEllipse(penSmooth, rectContourSmooth)
If m_borderSizeField > 0 Then graph.DrawEllipse(penBorder, rectBorder)
End Using
End Using
End Using
End Using
End Sub
Private m_properties As TextLocation
Private m_captiontext As TextLocation
Private m_captionx As TextLocation
Private m_captiony As TextLocation
Private m_borderSizeField As TextLocation
Private m_borderColorField As TextLocation
Private m_borderColor2Field As TextLocation
Private m_borderLineStyleField As TextLocation
Private m_borderCapStyleField As TextLocation
Private m_gradientAngleField As TextLocation
End Class
<ToolboxItem(False)>
Public Class TextLocation
Inherits Component
Private m_captiontext As String = "label"
Private m_captionx As New Point(50.0F, 10.0F)
Private m_borderSizeField As Integer = 2
Private m_borderColorField As Color = Color.Blue
Private m_borderColor2Field As Color = Color.RoyalBlue
Private m_borderLineStyleField As DashStyle = DashStyle.Solid
Private m_borderCapStyleField As DashCap = DashCap.Flat
Private m_gradientAngleField As Single = 50.0F
Public Sub New(picturebox As NewPictureBox)
Me.m_borderSizeField = m_borderSizeField
Me.m_borderColorField = m_borderColorField
Me.m_borderColor2Field = m_borderColor2Field
Me.m_borderLineStyleField = m_borderLineStyleField
Me.m_borderCapStyleField = m_borderCapStyleField
End Sub
<DesignerSerializationVisibility(DesignerSerializationVisibility.Content)>
Public Property Caption As String
Get
Return m_captiontext
End Get
Set(ByVal Value As String)
m_captiontext = Value
End Set
End Property
<DesignerSerializationVisibility(DesignerSerializationVisibility.Content)>
Property CaptionLocation As Point
Get
Return m_captionx
End Get
Set(ByVal Value As Point)
m_captionx = Value
End Set
End Property
<DesignerSerializationVisibility(DesignerSerializationVisibility.Content)>
Public Property BorderSize As Integer
Get
Return m_borderSizeField
End Get
Set(ByVal value As Integer)
m_borderSizeField = value
End Set
End Property
<DesignerSerializationVisibility(DesignerSerializationVisibility.Content)>
Public Property BorderColor As Color
Get
Return m_borderColorField
End Get
Set(ByVal value As Color)
m_borderColorField = value
End Set
End Property
<DesignerSerializationVisibility(DesignerSerializationVisibility.Content)>
Public Property BorderColor2 As Color
Get
Return m_borderColor2Field
End Get
Set(ByVal value As Color)
m_borderColor2Field = value
End Set
End Property
<DesignerSerializationVisibility(DesignerSerializationVisibility.Content)>
Public Property BorderLineStyle As DashStyle
Get
Return m_borderLineStyleField
End Get
Set(ByVal value As DashStyle)
m_borderLineStyleField = value
End Set
End Property
<DesignerSerializationVisibility(DesignerSerializationVisibility.Content)>
Public Property BorderCapStyle As DashCap
Get
Return m_borderCapStyleField
End Get
Set(ByVal value As DashCap)
m_borderCapStyleField = value
End Set
End Property
<DesignerSerializationVisibility(DesignerSerializationVisibility.Content)>
Public Property GradientAngle As Single
Get
Return m_gradientAngleField
End Get
Set(ByVal value As Single)
m_gradientAngleField = value
End Set
End Property
End Class Thanks again!
|
|
|
|
|
Even better than mine
Bastard Programmer from Hell
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
Thanks???
if i can get the "OnPaint" to work, i might be able to add rest of the properties!!!
Appreciate the help!
|
|
|
|
|
I was wondering if somebody can point me in the right direction on this
- The goal is to detect when a child form is being moved and read out the current position while moving
-I could use a timer to read out the current position - but at this point I have not been able to fire an event that indicates the form being moved or not ( grabbed by the tool bar that is)
This is just a normal form with standard close minimize / maximize buttons (Not that that should make a difference I assume)
What am I missing ? Any ideas ?
Georg
|
|
|
|
|
You're missing the Form.Move event. All you have to do is handle that event in your form code and you can get the Top and Left property values for the position of the form.
|
|
|
|
|
That's what I thought - unfortunately that event does not fire for me....
Is there a setting in the parent that could prevent that event from firing ?
Georg
|
|
|
|
|
That means there is no code "wiring-up" the event handler.
If you're looking at the position of Form2 from inside Form1 code, you have to "wire up" the event yourself. If you're only looking at the position of Form2 inside Form2 code, the event isn't getting wired up in the Designer code.
Which is it?
|
|
|
|
|
Hello,
I have a table layout panel that is dynamically populating a user control into a table panel layout.
The user control has a picturebox and a few text fields.
Loading the svg literally takes 2-3 seconds for each user control with the picture box to display.
The file sizes are only 2kb to 20 kb.
I've tried chnaging the sizemode property on the picturebox, but it acts the same no matter what.
I can step through the code and there is no delay at the Load step.
Any ideas why this is happening and how to speed this up?
'UserControl
Dim pp = New ProjectPart
With pp
pp.PictureBox.ImageLocation = strFileName
' pp.PictureBox.LoadAsync()
pp.PictureBox.Load()
pp.CheckBox.Text = PartPlastic_ID
pp.ComboBox.Text = PartPlastic_Status
pp.TextBoxPN.Text = PartPlastic_PartNumber
pp.TextBoxType.Text = PartPlastic_Type
End With
'Add to TablePanelLayout
TlpCustomerParts.Controls.Add(pp, currentcolumn, currentrow)
|
|
|
|
|
Try it with .png. If it's faster, than you know the .svg is slower (because it's a "draw command" file and not an "image").
"Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I
|
|
|
|
|
Unfortunately there is a library of thousands of parts. I'll try to convert some and check it out.
Thanks!
|
|
|
|
|
Member 12061771 wrote: Unfortunately there is a library of thousands of parts Download a few hundred, convert them using a script and test it. If it's true, write a script to convert them.
Being a library of thousands of parts is not an argument, it's not like someone is asking you to open each one in MS-paint and press "Save As".
Bastard Programmer from Hell
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
|
i have been using cliwrap for running git commands and passing the arguments. But it seems to have failed while running my msbuild command from my c# console application.
What i am trying-
var stdOutSetup = new StringBuilder();
var stdErrSetup = new StringBuilder();
var Setup = await Cli.Wrap("msbuild")
.WithArguments("/t:scmclean && /t:setup")
.WithStandardOutputPipe(PipeTarget.ToStringBuilder(stdOutSetup))
.WithStandardErrorPipe(PipeTarget.ToStringBuilder(stdErrSetup))
.ExecuteBufferedAsync();
var stdOut2 = stdOutSetup.ToString();
var stdErr2 = stdErrSetup.ToString();
Console.WriteLine("Build Commands Output :");
Console.WriteLine(stdOut2);
Console.WriteLine(stdErr2);
is there any possible way where i can run msbuild commands from my c# console application?
|
|
|
|
|
|
Madhurima Dutta wrote: is there any possible way where i can run msbuild commands from my c# console application? Yes, and the effect will be similar to writing them commands in a batch file.
Why is there an "await" in your code?
Search for C# execute console commands, the web has enough examples on how to launch stuff on the console.
Bastard Programmer from Hell
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
Hi, I have this old VB6 project that I need to modify a little. My question is where I can download(spyware free) VB6 or .ISO image? We do have MSDN subscription, but I can't find anything but the service pack. Found these installation instructions for Win 10: How to install Visual Basic 6 on Windows 10[^]
Also some strange download of one CD, that doesn't looks like what I'm searching for: WinWorld: Microsoft Visual Basic 6.0[^]
Thanks!
Advertise here – minimum three posts per day are guaranteed.
|
|
|
|
|
There is no legitimate download for VB6 or VS6. It's been a dead product for quite some time now.
|
|
|
|
|
Thanks. This is what I came to after digging around. Typical MC mess.
Advertise here – minimum three posts per day are guaranteed.
|
|
|
|
|